2008-08-18 12:17:47

by David Woodhouse

[permalink] [raw]
Subject: [PATCH 3/3] Use fsid from statfs for UUID if blkid can't cope (or not used)

Signed-off-by: David Woodhouse <[email protected]>
---
utils/mountd/cache.c | 13 +++++++++++--
1 files changed, 11 insertions(+), 2 deletions(-)

diff --git a/utils/mountd/cache.c b/utils/mountd/cache.c
index 0136eca..f29b885 100644
--- a/utils/mountd/cache.c
+++ b/utils/mountd/cache.c
@@ -213,8 +213,17 @@ int get_uuid(char *path, char *uuid, int uuidlen, char *u)

if (path) {
val = get_uuid_blkdev(path);
- if (!val)
- return 0;
+ if (!val) {
+ struct statfs64 st;
+
+ if (statfs64(path, &st))
+ return 0;
+ if (!st.f_fsid.__val[0] && !st.f_fsid.__val[1])
+ return 0;
+ snprintf(fsid_val, 17, "%08x%08x",
+ st.f_fsid.__val[0], st.f_fsid.__val[1]);
+ val = fsid_val;
+ }
} else {
val = uuid;
}
--
1.5.5.1


--
David Woodhouse Open Source Technology Centre
[email protected] Intel Corporation