aio: use kiocb_{start,end}_write() helpers
authorAmir Goldstein <amir73il@gmail.com>
Thu, 17 Aug 2023 14:13:35 +0000 (17:13 +0300)
committerChristian Brauner <brauner@kernel.org>
Mon, 21 Aug 2023 15:27:26 +0000 (17:27 +0200)
Use helpers instead of the open coded dance to silence lockdep warnings.

Suggested-by: Jan Kara <jack@suse.cz>
Signed-off-by: Amir Goldstein <amir73il@gmail.com>
Reviewed-by: Jan Kara <jack@suse.cz>
Reviewed-by: Jens Axboe <axboe@kernel.dk>
Message-Id: <20230817141337.1025891-6-amir73il@gmail.com>
Signed-off-by: Christian Brauner <brauner@kernel.org>
fs/aio.c

index 77e3361..b3174da 100644 (file)
--- a/fs/aio.c
+++ b/fs/aio.c
@@ -1447,13 +1447,8 @@ static void aio_complete_rw(struct kiocb *kiocb, long res)
        if (kiocb->ki_flags & IOCB_WRITE) {
                struct inode *inode = file_inode(kiocb->ki_filp);
 
-               /*
-                * Tell lockdep we inherited freeze protection from submission
-                * thread.
-                */
                if (S_ISREG(inode->i_mode))
-                       __sb_writers_acquired(inode->i_sb, SB_FREEZE_WRITE);
-               file_end_write(kiocb->ki_filp);
+                       kiocb_end_write(kiocb);
        }
 
        iocb->ki_res.res = res;
@@ -1581,17 +1576,8 @@ static int aio_write(struct kiocb *req, const struct iocb *iocb,
                return ret;
        ret = rw_verify_area(WRITE, file, &req->ki_pos, iov_iter_count(&iter));
        if (!ret) {
-               /*
-                * Open-code file_start_write here to grab freeze protection,
-                * which will be released by another thread in
-                * aio_complete_rw().  Fool lockdep by telling it the lock got
-                * released so that it doesn't complain about the held lock when
-                * we return to userspace.
-                */
-               if (S_ISREG(file_inode(file)->i_mode)) {
-                       sb_start_write(file_inode(file)->i_sb);
-                       __sb_writers_release(file_inode(file)->i_sb, SB_FREEZE_WRITE);
-               }
+               if (S_ISREG(file_inode(file)->i_mode))
+                       kiocb_start_write(req);
                req->ki_flags |= IOCB_WRITE;
                aio_rw_done(req, call_write_iter(file, req, &iter));
        }