From ebc334a4cc020eaf4f46055155db3a4dede9bfc2 Mon Sep 17 00:00:00 2001 From: Anders Kaseorg Date: Tue, 12 Nov 2013 00:23:47 -0500 Subject: [PATCH] Linux: afs_fill_super: Call bdi_destroy on the failure path Without this, if AFS startup failed, then trying to start AFS again triggers these warnings: WARNING: CPU: 3 PID: 657 at /build/buildd/linux-3.12.0/fs/sysfs/dir.c:526 sysfs_add_one+0xa5/0xd0() sysfs: cannot create duplicate filename '/devices/virtual/bdi/afs' WARNING: CPU: 3 PID: 657 at /build/buildd/linux-3.12.0/lib/kobject.c:196 kobject_add_internal+0x1f4/0x300() kobject_add_internal failed for afs with -EEXIST, don't try to register things with the same name in the same directory. and leads to general system instability. This can be reproduced by starting AFS twice with an empty cache, dynroot disabled, and no network. Signed-off-by: Anders Kaseorg Reviewed-on: http://gerrit.openafs.org/10448 Tested-by: BuildBot Reviewed-by: Marc Dionne Reviewed-by: Derrick Brashear (cherry picked from commit f5f53cb0a1f326ed4695621f6a5a63f798444549) Change-Id: I6dda2fb561279d445bb7fdfdb601b64b326cd4c1 Reviewed-on: http://gerrit.openafs.org/10454 Tested-by: BuildBot Reviewed-by: Marc Dionne Reviewed-by: Michael Meffie Reviewed-by: Jeffrey Altman Reviewed-by: Stephan Wiesand --- src/afs/LINUX/osi_vfsops.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/afs/LINUX/osi_vfsops.c b/src/afs/LINUX/osi_vfsops.c index bc951a22b..e0bea4825 100644 --- a/src/afs/LINUX/osi_vfsops.c +++ b/src/afs/LINUX/osi_vfsops.c @@ -147,6 +147,10 @@ afs_fill_super(struct super_block *sb, void *data, int silent) if (code) { afs_globalVFS = NULL; afs_FlushAllVCaches(); +#if defined(HAVE_LINUX_BDI_INIT) + bdi_destroy(afs_backing_dev_info); +#endif + osi_Free(afs_backing_dev_info, sizeof(struct backing_dev_info)); module_put(THIS_MODULE); } -- 2.39.5