On Mon, Sep 21, 2015 at 03:41:21PM -0400, Phil Susi wrote: > On 8/6/2015 6:45 PM, Brian C. Lane wrote: > > When a device is opened for RW closing it can trigger other actions, > > like udev scanning it for partition changes. Use read only for the > > init_* methods and RW for actual changes to the device. > > > > This adds _device_open which takes mode flags as an argument and turns > > linux_open into a wrapper for it with RW_MODE. > > > > _device_open_ro is added to open the device with RD_MODE and increment > > the open_counter. This is used in the init_* functions. > > > > _device_close is a wrapper around linux_close that decrements the > > open_counter and is used in the init_* functions. > > > > All of these changes are self-contained with no external API changes. > > The only visible change in behavior is that when a new PedDevice is > > created the device is opened in RO_MODE instead of RW_MODE. > > > > Resolves: rhbz#1245144 > > I like the idea in theory, but how can this work without changing the > api? For instance, the print command invokes the filesystem probe code, > which ends up calling linux_open(), and so that will result in a r/w > open when it really only needs read access.
This doesn't try to make any commands use RO, it is making sure that there is only 1 RW open/close instead of 2 of them. When linux_new is called it calls the init_ functions which don't need to be RW so now we have a RO open/close and then a RW open/close and udev only watches for RW so it doesn't trigger the udev rules close together. -- Brian C. Lane | Anaconda Team | IRC: bcl #anaconda | Port Orchard, WA (PST8PDT)

