Hello,
On Mon, Jul 27, 2009 at 09:12:46AM +0200, Carl Fredrik Hammar wrote:
> This is just a thought that suddenly struck me, I figure I'll get it
> out so I don't forget it.
>
> On Fri, Jul 17, 2009 at 01:58:01PM +0300, Sergiu Ivanov wrote:
> > +/* Shutdown the filesystem; flags are as for fsys_goaway. */
> > +error_t
> > +netfs_shutdown (int flags)
> > +{
> > + int nports;
> > + int err;
> > +
> > + if ((flags & FSYS_GOAWAY_UNLINK)
> > + && S_ISDIR (netfs_root_node->nn_stat.st_mode))
> > + return EBUSY;
> > +
> > + /* Permit all current RPC's to finish, and then suspend any new ones. */
> > + err = ports_inhibit_class_rpcs (netfs_protid_class);
> > + if (err)
> > + return err;
> > +
> > + nports = ports_count_class (netfs_protid_class);
> > + if (((flags & FSYS_GOAWAY_FORCE) == 0) && nports)
> > + /* There are outstanding user ports; resume operations. */
> > + {
> > + ports_enable_class (netfs_protid_class);
> > + ports_resume_class_rpcs (netfs_protid_class);
> > +
> > + return EBUSY;
> > + }
> > +
> > + if (!(flags & FSYS_GOAWAY_NOSYNC))
> > + {
> > + err = netfs_attempt_syncfs (0, flags);
> > + if (err)
> > + return err;
> > + }
> > +
> > + /* If `shutting_down` is set, unionfs is going away because the
> > + mounee has just died, so we don't need to attempt to shut it
> > + down. */
> > + if (!shutting_down)
> > + {
> > + shutting_down = 1;
> > + err = fsys_goaway (mountee_control, flags);
> > + if (err)
> > + return err;
> > + }
> > +
> > return 0;
> > }
>
> Shouldn't you resume operations if fsys_goaway returns EBUSY?
Yeah, sure. Thanks for pointing out :-)
Regards,
scolobb