On Tue, Jun 14, 2016 at 10:32:57AM -0300, Paulo Alcantara wrote: > > > On June 14, 2016 9:58:59 AM GMT-03:00, Brian Foster <bfoster@xxxxxxxxxx> wrote: ... > > > >Signed-off-by: Brian Foster <bfoster@xxxxxxxxxx> > >--- > > > >This is something I had laying around from the thin block device > >reservation stuff. That work introduced a more common > >xfs_mod_fdblocks() > >failure scenario that isn't as much of a problem with the current code, > >but the current xfs_reserve_blocks() retry code is clearly broken and > >so > >should probably be fixed up. > > > >Brian > > > >fs/xfs/xfs_fsops.c | 105 > >++++++++++++++++++++++++++++++----------------------- > > 1 file changed, 60 insertions(+), 45 deletions(-) > > > >diff --git a/fs/xfs/xfs_fsops.c b/fs/xfs/xfs_fsops.c > >index b4d7582..003d180 100644 > >--- a/fs/xfs/xfs_fsops.c > >+++ b/fs/xfs/xfs_fsops.c ... > >@@ -707,54 +709,67 @@ retry: > > mp->m_resblks_avail -= lcounter; > > } > > mp->m_resblks = request; > >- } else { > >- __int64_t free; > >+ if (fdblks_delta) { > >+ spin_unlock(&mp->m_sb_lock); > >+ error = xfs_mod_fdblocks(mp, fdblks_delta, 0); > >+ spin_lock(&mp->m_sb_lock); > >+ } > >+ > >+ goto out; > >+ } > > > >+ /* > >+ * If the request is larger than the current reservation, reserve the > >+ * blocks before we update the reserve counters. Sample m_fdblocks > >and > >+ * perform a partial reservation if the request exceeds free space. > >+ */ > >+ error = -ENOSPC; > >+ while (error == -ENOSPC) { > > Why don't you make this a "do { } while (error == -ENOSPC)"? xfs_mod_fdblocks() will already set the error at the end of that loop. > Sure, I can clean that up. Thanks. Brian > Paulo > > -- > Paulo Alcantara, HP > Speaking for myself only. > > _______________________________________________ > xfs mailing list > xfs@xxxxxxxxxxx > http://oss.sgi.com/mailman/listinfo/xfs _______________________________________________ xfs mailing list xfs@xxxxxxxxxxx http://oss.sgi.com/mailman/listinfo/xfs