:Matthew Dillon wrote: :> So this patch is a hack. It returns special devices directly whenever :> possible but must still synthesize temporary vnodes for them for :> RENAME and DELETE operations. But short of rewriting a big chunk of :> the device tracking infrastructure there is no other solution. : :If you are going to do that, why not just add: : :static vop_t **nullfs_specop_p; :static struct vnodeopv_entry_desc nullfs_specop_entries[] = { :... :}; :static struct vnodeopv_desc fs_specop_opv_desc = : { &nullfs_specop_p, nullfs_specop_entries }; :VNODEOP_SET(nullfs_specop_opv_desc); : :??? : :That way the devices get exported directly (still), but the rename, :delete, and other code can be left alone. : :It's really ugly to think of a "nullfs" doing this, though, so :I guess it's sixes on which approach is used. Told you it was :crufty. 8-(. : :-- Terry
Hmm. That might just work since unionfs (with the patch) doesn't try to cache non-regular vnodes, and (nullfs doesn't try to cache anything). It would allow us to call addalias() and track v_rdev (though there might be a problem with sequencing since calling addalias while still holding lowervp or uppervp temporarily bump the count above 1 and possibly confuse the device driver into believing that the device has been opened when it may not have been). Unionfs and nullfs would still have to be aware of all the special vnode types. -Matt Matthew Dillon <[EMAIL PROTECTED]> To Unsubscribe: send mail to [EMAIL PROTECTED] with "unsubscribe freebsd-hackers" in the body of the message