ovl: use kiocb_{start,end}_write() helpers
authorAmir Goldstein <amir73il@gmail.com>
Thu, 17 Aug 2023 14:13:36 +0000 (17:13 +0300)
committerChristian Brauner <brauner@kernel.org>
Mon, 21 Aug 2023 15:27:27 +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-7-amir73il@gmail.com>
Signed-off-by: Christian Brauner <brauner@kernel.org>
fs/overlayfs/file.c

index 21245b0..e4cc401 100644 (file)
@@ -290,10 +290,7 @@ static void ovl_aio_cleanup_handler(struct ovl_aio_req *aio_req)
        if (iocb->ki_flags & IOCB_WRITE) {
                struct inode *inode = file_inode(orig_iocb->ki_filp);
 
-               /* Actually acquired in ovl_write_iter() */
-               __sb_writers_acquired(file_inode(iocb->ki_filp)->i_sb,
-                                     SB_FREEZE_WRITE);
-               file_end_write(iocb->ki_filp);
+               kiocb_end_write(iocb);
                ovl_copyattr(inode);
        }
 
@@ -409,10 +406,6 @@ static ssize_t ovl_write_iter(struct kiocb *iocb, struct iov_iter *iter)
                if (!aio_req)
                        goto out;
 
-               file_start_write(real.file);
-               /* Pacify lockdep, same trick as done in aio_write() */
-               __sb_writers_release(file_inode(real.file)->i_sb,
-                                    SB_FREEZE_WRITE);
                aio_req->fd = real;
                real.flags = 0;
                aio_req->orig_iocb = iocb;
@@ -420,6 +413,7 @@ static ssize_t ovl_write_iter(struct kiocb *iocb, struct iov_iter *iter)
                aio_req->iocb.ki_flags = ifl;
                aio_req->iocb.ki_complete = ovl_aio_rw_complete;
                refcount_set(&aio_req->ref, 2);
+               kiocb_start_write(&aio_req->iocb);
                ret = vfs_iocb_iter_write(real.file, &aio_req->iocb, iter);
                ovl_aio_put(aio_req);
                if (ret != -EIOCBQUEUED)