Hi Rajat, I have few questions below, but to add in advance, I might be confusing the role that "type->supports_removable" and "dev->removable" plays here, and if so then I apologise. [...] > @@ -2504,8 +2523,16 @@ static int device_add_attrs(struct device *dev) > goto err_remove_dev_online; > } > > + if (type && type->supports_removable) { > + error = device_create_file(dev, &dev_attr_removable); > + if (error) > + goto err_remove_dev_waiting_for_supplier; > + } > + > return 0; Would a check for "dev->removable == DEVICE_REMOVABLE" here be more appropriate? Unless you wanted to add sysfs objects when the device hints that it has a notion of being removable even though it might be set to "unknown" or "fixed" (if that state is at all possible then), and in which case using the dev_is_removable() helper would also not be an option since it does a more complex check internally. Technically, you could always add this sysfs object (similarly to what USB core did) as it would then show the correct state depending on "dev->removable". Also, I suppose, it's not possible for a device to have "supports_removable" set to true, but "removable" would be different than "DEVICE_REMOVABLE", correct? [...] > +enum device_removable { > + DEVICE_REMOVABLE_UNKNOWN = 0, > + DEVICE_REMOVABLE, > + DEVICE_FIXED, > +}; I know this was moved from the USB core, but I personally find it a little bit awkward to read, would something like that be acceptable? enum device_removable { DEVICE_STATE_UNKNOWN = 0, DEVICE_STATE_REMOVABLE, DEVICE_STATE_FIXED, }; The addition of state to the name follows the removable_show() function where the local variable is called "state", and I think it makes sense to call this as such. What do you think? > +static inline bool dev_is_removable(struct device *dev) > +{ > + return dev && dev->type && dev->type->supports_removable > + && dev->removable == DEVICE_REMOVABLE; > +} Similarly to my question about - would a simple check to see if "dev->removable" is set to "DEVICE_REMOVABLE" here be enough? Krzysztof