On Tue, Aug 29, 2023 at 03:41:43PM +0800, Hao Xu wrote:
> On 8/28/23 04:44, Matthew Wilcox wrote:
> > > @@ -391,10 +401,17 @@ xfs_dir2_leaf_getdents(
> > >                                   bp = NULL;
> > >                           }
> > > -                 if (*lock_mode == 0)
> > > -                         *lock_mode = xfs_ilock_data_map_shared(dp);
> > > +                 if (*lock_mode == 0) {
> > > +                         *lock_mode =
> > > +                                 xfs_ilock_data_map_shared_generic(dp,
> > > +                                 ctx->flags & DIR_CONTEXT_F_NOWAIT);
> > > +                         if (!*lock_mode) {
> > > +                                 error = -EAGAIN;
> > > +                                 break;
> > > +                         }
> > > +                 }
> > 
> > 'generic' doesn't seem like a great suffix to mean 'takes nowait flag'.
> > And this is far too far indented.
> > 
> >                     xfs_dir2_lock(dp, ctx, lock_mode);
> > 
> > with:
> > 
> > STATIC void xfs_dir2_lock(struct xfs_inode *dp, struct dir_context *ctx,
> >             unsigned int lock_mode)
> > {
> >     if (*lock_mode)
> >             return;
> >     if (ctx->flags & DIR_CONTEXT_F_NOWAIT)
> >             return xfs_ilock_data_map_shared_nowait(dp);
> >     return xfs_ilock_data_map_shared(dp);
> > }
> > 
> > ... which I think you can use elsewhere in this patch (reformat it to
> > XFS coding style, of course).  And then you don't need
> > xfs_ilock_data_map_shared_generic().
> 
> How about rename xfs_ilock_data_map_shared() to xfs_ilock_data_map_block()
> and rename xfs_ilock_data_map_shared_generic() to
> xfs_ilock_data_map_shared()?
> 
> STATIC void xfs_ilock_data_map_shared(struct xfs_inode *dp, struct
> dir_context *ctx, unsigned int lock_mode)
> {
>       if (*lock_mode)
>               return;
>       if (ctx->flags & DIR_CONTEXT_F_NOWAIT)
>               return xfs_ilock_data_map_shared_nowait(dp);
>       return xfs_ilock_data_map_shared_block(dp);
> }

xfs_ilock_data_map_shared() is used for a lot of things which are not
directories.  I think a new function name is appropriate, and that
function name should include the word 'dir' in it somewhere.

--
Linux-cachefs mailing list
Linux-cachefs@redhat.com
https://listman.redhat.com/mailman/listinfo/linux-cachefs

Reply via email to