Re: [PATCH] writeback: safer lock nesting

From: Greg Thelen
Date: Fri Apr 06 2018 - 14:50:11 EST


On Fri, Apr 6, 2018 at 1:07 AM Michal Hocko <mhocko@xxxxxxxxxx> wrote:

> On Fri 06-04-18 01:03:24, Greg Thelen wrote:
> [...]
> > diff --git a/fs/fs-writeback.c b/fs/fs-writeback.c
> > index d4d04fee568a..d51bae5a53e2 100644
> > --- a/fs/fs-writeback.c
> > +++ b/fs/fs-writeback.c
> > @@ -746,10 +746,11 @@ int inode_congested(struct inode *inode, int
cong_bits)
> > if (inode && inode_to_wb_is_valid(inode)) {
> > struct bdi_writeback *wb;
> > bool locked, congested;
> > + unsigned long flags;
> >
> > - wb = unlocked_inode_to_wb_begin(inode, &locked);
> > + wb = unlocked_inode_to_wb_begin(inode, &locked, &flags);

> Wouldn't it be better to have a cookie (struct) rather than 2 parameters
> and let unlocked_inode_to_wb_end DTRT?

Nod. I'll post a V2 patch with that change.

> > congested = wb_congested(wb, cong_bits);
> > - unlocked_inode_to_wb_end(inode, locked);
> > + unlocked_inode_to_wb_end(inode, locked, flags);
> > return congested;
> > }
> --
> Michal Hocko
> SUSE Labs