private <T extends ZFSObject> List<T> children(Class<T> type, List<T> list, boolean recursive) { for (ZFSObject snap : snapshots()) { if(type.isInstance(snap)) list.add(type.cast(snap)); } for (ZFSObject child : getChildren()) { if (!child.getName().contains("@")) { if(type.isInstance(child)) list.add(type.cast(child)); if(recursive) child.children(type,list,recursive); } } return list; }
private <T extends ZFSObject> List<T> children(Class<T> type, List<T> list, boolean recursive) { for (ZFSObject snap : snapshots()) { if(type.isInstance(snap)) list.add(type.cast(snap)); } for (ZFSObject child : getChildren()) { if (!child.getName().contains("@")) { if(type.isInstance(child)) list.add(type.cast(child)); if(recursive) child.children(type,list,recursive); } } return list; }
public ZFSObject rollback(boolean recursive) { String filesystem = name.substring(0, getName().indexOf("@")); ZFSObject fs = library.open(filesystem); if (recursive) { /* first pass - check for clones */ List<ZFSObject> list = fs.getChildren(); for (ZFSObject child : list) { if (!child.getName().startsWith(filesystem + "@")) { return child; } } /* second pass - find snapshot index, destroy later snapshots */ boolean found = false; for (ZFSObject snap : fs.snapshots()) { String name = snap.getName(); if (name.equals(getName())) { found = true; continue; } if (found) { snap.destory(); } } } if (LIBZFS.zfs_rollback(fs.handle, handle, recursive) != 0) throw new ZFSException(library); return library.open(filesystem); }
public ZFSObject rollback(boolean recursive) { String filesystem = name.substring(0, getName().indexOf("@")); ZFSObject fs = library.open(filesystem); if (recursive) { /* first pass - check for clones */ List<ZFSObject> list = fs.getChildren(); for (ZFSObject child : list) { if (!child.getName().startsWith(filesystem + "@")) { return child; } } /* second pass - find snapshot index, destroy later snapshots */ boolean found = false; for (ZFSObject snap : fs.snapshots()) { String name = snap.getName(); if (name.equals(getName())) { found = true; continue; } if (found) { snap.destory(); } } } if (LIBZFS.zfs_rollback(fs.handle, handle, recursive) != 0) throw new ZFSException(library); return library.open(filesystem); }