fs = fs_from_sb(sb);
for (s = 1; s < fs->maxsnapshot; s++) {
+ int nlen;
+
if (fs->ss[s].root_addr == 0)
continue;
if (fs->ss[s].root) {
struct lafs_inode *li = LAFSI(fs->ss[s].root);
- if (strcmp(li->md.fs.name, op.snapshot) == 0)
+ if (li->md.fs.name &&
+ strcmp(li->md.fs.name, op.snapshot) == 0)
/* found it */
break;
}
if (err)
continue;
lai = (struct la_inode *)page_address(p);
- printk("ss %d is %.64s\n", s, lai->metadata[0].fs.name);
- if (strncmp(lai->metadata[0].fs.name, op.snapshot, 64) != 0)
+ nlen = le16_to_cpu(lai->metadata_size) -
+ offsetof(struct la_inode, metadata[0].fs.name);
+ printk("ss %d is %.*s\n", s, nlen, lai->metadata[0].fs.name);
+ if (strncmp(lai->metadata[0].fs.name, op.snapshot, nlen) != 0)
continue;
/* FIXME more checks? */
/* Found it */