cachefiles: use kiocb_{start,end}_write() helpers
authorAmir Goldstein <amir73il@gmail.com>
Thu, 17 Aug 2023 14:13:37 +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-8-amir73il@gmail.com>
Signed-off-by: Christian Brauner <brauner@kernel.org>
fs/cachefiles/io.c

index 175a25fcade8255f47cf2f28056a366413d69a30..009d23cd435b544d2b7176c86a0f42eb4d2e2a4a 100644 (file)
@@ -259,9 +259,7 @@ static void cachefiles_write_complete(struct kiocb *iocb, long ret)
 
        _enter("%ld", ret);
 
-       /* Tell lockdep we inherited freeze protection from submission thread */
-       __sb_writers_acquired(inode->i_sb, SB_FREEZE_WRITE);
-       __sb_end_write(inode->i_sb, SB_FREEZE_WRITE);
+       kiocb_end_write(iocb);
 
        if (ret < 0)
                trace_cachefiles_io_error(object, inode, ret,
@@ -286,7 +284,6 @@ int __cachefiles_write(struct cachefiles_object *object,
 {
        struct cachefiles_cache *cache;
        struct cachefiles_kiocb *ki;
-       struct inode *inode;
        unsigned int old_nofs;
        ssize_t ret;
        size_t len = iov_iter_count(iter);
@@ -322,19 +319,12 @@ int __cachefiles_write(struct cachefiles_object *object,
                ki->iocb.ki_complete = cachefiles_write_complete;
        atomic_long_add(ki->b_writing, &cache->b_writing);
 
-       /* 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.
-        */
-       inode = file_inode(file);
-       __sb_start_write(inode->i_sb, SB_FREEZE_WRITE);
-       __sb_writers_release(inode->i_sb, SB_FREEZE_WRITE);
+       kiocb_start_write(&ki->iocb);
 
        get_file(ki->iocb.ki_filp);
        cachefiles_grab_object(object, cachefiles_obj_get_ioreq);
 
-       trace_cachefiles_write(object, inode, ki->iocb.ki_pos, len);
+       trace_cachefiles_write(object, file_inode(file), ki->iocb.ki_pos, len);
        old_nofs = memalloc_nofs_save();
        ret = cachefiles_inject_write_error();
        if (ret == 0)