diff for duplicates of <1489536441.2676.21.camel@sandisk.com> diff --git a/a/1.txt b/N1/1.txt index 257c3dc..d02ed86 100644 --- a/a/1.txt +++ b/N1/1.txt @@ -3,34 +3,30 @@ On Thu, 2017-03-09 at 21:02 +0800, Ming Lei wrote: > index 159187a28d66..0aff380099d5 100644 > --- a/block/blk-mq.c > +++ b/block/blk-mq.c -> @@ -697,17 +697,8 @@ static void blk_mq_check_expired(struct blk_mq_hw_ct= -x *hctx, +> @@ -697,17 +697,8 @@ static void blk_mq_check_expired(struct blk_mq_hw_ctx *hctx, > { -> struct blk_mq_timeout_data *data =3D priv; -> =20 +> struct blk_mq_timeout_data *data = priv; +> > - if (!test_bit(REQ_ATOM_STARTED, &rq->atomic_flags)) { > - /* > - * If a request wasn't started before the queue was > - * marked dying, kill it here or it'll go unnoticed. > - */ > - if (unlikely(blk_queue_dying(rq->q))) { -> - rq->errors =3D -EIO; +> - rq->errors = -EIO; > - blk_mq_end_request(rq, rq->errors); > - } > + if (!test_bit(REQ_ATOM_STARTED, &rq->atomic_flags)) > return; > - } -> =20 +> > if (time_after_eq(jiffies, rq->deadline)) { > if (!blk_mark_rq_complete(rq)) -Both the old and the new check look racy to me. The REQ_ATOM_STARTED bit ca= -n -be changed concurrently by blk_mq_start_request(), __blk_mq_finish_request(= -) +Both the old and the new check look racy to me. The REQ_ATOM_STARTED bit can +be changed concurrently by blk_mq_start_request(), __blk_mq_finish_request() or __blk_mq_requeue_request(). Another issue with this function is that the -request passed to this function can be reinitialized concurrently. Sorry bu= -t +request passed to this function can be reinitialized concurrently. Sorry but I'm not sure what the best way is to address these issues. -Bart.= +Bart. diff --git a/a/content_digest b/N1/content_digest index 82861fe..c0f5270 100644 --- a/a/content_digest +++ b/N1/content_digest @@ -17,36 +17,32 @@ "> index 159187a28d66..0aff380099d5 100644\n" "> --- a/block/blk-mq.c\n" "> +++ b/block/blk-mq.c\n" - "> @@ -697,17 +697,8 @@ static void blk_mq_check_expired(struct blk_mq_hw_ct=\n" - "x *hctx,\n" + "> @@ -697,17 +697,8 @@ static void blk_mq_check_expired(struct blk_mq_hw_ctx *hctx,\n" "> {\n" - "> \tstruct blk_mq_timeout_data *data =3D priv;\n" - "> =20\n" + "> \tstruct blk_mq_timeout_data *data = priv;\n" + "> \n" "> -\tif (!test_bit(REQ_ATOM_STARTED, &rq->atomic_flags)) {\n" "> -\t\t/*\n" "> -\t\t * If a request wasn't started before the queue was\n" "> -\t\t * marked dying, kill it here or it'll go unnoticed.\n" "> -\t\t */\n" "> -\t\tif (unlikely(blk_queue_dying(rq->q))) {\n" - "> -\t\t\trq->errors =3D -EIO;\n" + "> -\t\t\trq->errors = -EIO;\n" "> -\t\t\tblk_mq_end_request(rq, rq->errors);\n" "> -\t\t}\n" "> +\tif (!test_bit(REQ_ATOM_STARTED, &rq->atomic_flags))\n" "> \t\treturn;\n" "> -\t}\n" - "> =20\n" + "> \n" "> \tif (time_after_eq(jiffies, rq->deadline)) {\n" "> \t\tif (!blk_mark_rq_complete(rq))\n" "\n" - "Both the old and the new check look racy to me. The REQ_ATOM_STARTED bit ca=\n" - "n\n" - "be changed concurrently by blk_mq_start_request(), __blk_mq_finish_request(=\n" - ")\n" + "Both the old and the new check look racy to me. The REQ_ATOM_STARTED bit can\n" + "be changed concurrently by blk_mq_start_request(), __blk_mq_finish_request()\n" "or __blk_mq_requeue_request(). Another issue with this function is that the\n" - "request passed to this function can be reinitialized concurrently. Sorry bu=\n" - "t\n" + "request passed to this function can be reinitialized concurrently. Sorry but\n" "I'm not sure what the best way is to address these issues.\n" "\n" - Bart.= + Bart. -9215895a3b889402a652d0b296d21ea48eceabd185051e3503ccfa3582f00ece +1b38617870c4e7913516f651c1a3ef8d57d88b24c9ebd83879570ddd6cf6ddc6
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.