# This is a BitKeeper generated patch for the following project: # Project Name: Linux kernel tree # This patch format is intended for GNU patch command version 2.5 or higher. # This patch includes the following deltas: # ChangeSet 1.683 -> 1.684 # drivers/hotplug/pci_hotplug_core.c 1.5 -> 1.6 # # The following is the BitKeeper ChangeSet Log # -------------------------------------------- # 02/09/18 scottm@somanetworks.com 1.684 # [PATCH] Small pcihpfs dnotify fix # # I've been working on a userspace daemon to go with my CompactPCI driver, # and yesterday I discovered an oversight in pci_hp_change_slot_info - it # doesn't call dnotify_parent, so dnotify based clients basically don't # work against pcihpfs. The following patch (against 2.5 BK) reworks # things to just update the mtime (since we're modifying the file after # all), and then call dnotify_parent. # -------------------------------------------- # diff -Nru a/drivers/hotplug/pci_hotplug_core.c b/drivers/hotplug/pci_hotplug_core.c --- a/drivers/hotplug/pci_hotplug_core.c Thu Sep 19 17:19:10 2002 +++ b/drivers/hotplug/pci_hotplug_core.c Thu Sep 19 17:19:10 2002 @@ -37,6 +37,7 @@ #include #include #include +#include #include #include "pci_hotplug.h" @@ -1006,10 +1007,13 @@ return 0; } -static inline void update_inode_time (struct inode *inode) +static inline void update_dentry_inode_time (struct dentry *dentry) { - if (inode) - inode->i_atime = inode->i_mtime = inode->i_ctime = CURRENT_TIME; + struct inode *inode = dentry->d_inode; + if (inode) { + inode->i_mtime = CURRENT_TIME; + dnotify_parent(dentry, DN_MODIFY); + } } /** @@ -1044,16 +1048,16 @@ core = temp->core_priv; if ((core->power_dentry) && (temp->info->power_status != info->power_status)) - update_inode_time (core->power_dentry->d_inode); + update_dentry_inode_time (core->power_dentry); if ((core->attention_dentry) && (temp->info->attention_status != info->attention_status)) - update_inode_time (core->attention_dentry->d_inode); + update_dentry_inode_time (core->attention_dentry); if ((core->latch_dentry) && (temp->info->latch_status != info->latch_status)) - update_inode_time (core->latch_dentry->d_inode); + update_dentry_inode_time (core->latch_dentry); if ((core->adapter_dentry) && (temp->info->adapter_status != info->adapter_status)) - update_inode_time (core->adapter_dentry->d_inode); + update_dentry_inode_time (core->adapter_dentry); memcpy (temp->info, info, sizeof (struct hotplug_slot_info)); spin_unlock (&list_lock);