Loading fs/io_uring.c +10 −11 Original line number Diff line number Diff line Loading @@ -3030,16 +3030,7 @@ static int io_close(struct io_kiocb *req, struct io_kiocb **nxt, return ret; /* if the file has a flush method, be safe and punt to async */ if (req->close.put_file->f_op->flush && !io_wq_current_is_worker()) goto eagain; /* * No ->flush(), safely close from here and just punt the * fput() to async context. */ __io_close_finish(req, nxt); return 0; eagain: if (req->close.put_file->f_op->flush && force_nonblock) { req->work.func = io_close_finish; /* * Do manual async queue here to avoid grabbing files - we don't Loading @@ -3050,6 +3041,14 @@ static int io_close(struct io_kiocb *req, struct io_kiocb **nxt, return 0; } /* * No ->flush(), safely close from here and just punt the * fput() to async context. */ __io_close_finish(req, nxt); return 0; } static int io_prep_sfr(struct io_kiocb *req, const struct io_uring_sqe *sqe) { struct io_ring_ctx *ctx = req->ctx; Loading Loading
fs/io_uring.c +10 −11 Original line number Diff line number Diff line Loading @@ -3030,16 +3030,7 @@ static int io_close(struct io_kiocb *req, struct io_kiocb **nxt, return ret; /* if the file has a flush method, be safe and punt to async */ if (req->close.put_file->f_op->flush && !io_wq_current_is_worker()) goto eagain; /* * No ->flush(), safely close from here and just punt the * fput() to async context. */ __io_close_finish(req, nxt); return 0; eagain: if (req->close.put_file->f_op->flush && force_nonblock) { req->work.func = io_close_finish; /* * Do manual async queue here to avoid grabbing files - we don't Loading @@ -3050,6 +3041,14 @@ static int io_close(struct io_kiocb *req, struct io_kiocb **nxt, return 0; } /* * No ->flush(), safely close from here and just punt the * fput() to async context. */ __io_close_finish(req, nxt); return 0; } static int io_prep_sfr(struct io_kiocb *req, const struct io_uring_sqe *sqe) { struct io_ring_ctx *ctx = req->ctx; Loading