|
From: <ga...@us...> - 2012-08-10 06:37:22
|
Revision: 5911
http://jnode.svn.sourceforge.net/jnode/?rev=5911&view=rev
Author: galatnm
Date: 2012-08-10 06:37:15 +0000 (Fri, 10 Aug 2012)
Log Message:
-----------
Detect inodes that use ext4 extents
Modified Paths:
--------------
trunk/fs/src/fs/org/jnode/fs/ext2/Ext2Constants.java
trunk/fs/src/fs/org/jnode/fs/ext2/Ext2Directory.java
Modified: trunk/fs/src/fs/org/jnode/fs/ext2/Ext2Constants.java
===================================================================
--- trunk/fs/src/fs/org/jnode/fs/ext2/Ext2Constants.java 2012-08-10 06:36:07 UTC (rev 5910)
+++ trunk/fs/src/fs/org/jnode/fs/ext2/Ext2Constants.java 2012-08-10 06:37:15 UTC (rev 5911)
@@ -78,6 +78,7 @@
// behaviour control flags in the inode
public static final long EXT2_INDEX_FL = 0x00010000; // hash indexed directory
+ public static final long EXT4_INODE_EXTENTS_FLAG = 0x00080000;
// Filesystem state constants
public static final int EXT2_VALID_FS = 0x0001; // cleanly unmounted
Modified: trunk/fs/src/fs/org/jnode/fs/ext2/Ext2Directory.java
===================================================================
--- trunk/fs/src/fs/org/jnode/fs/ext2/Ext2Directory.java 2012-08-10 06:36:07 UTC (rev 5910)
+++ trunk/fs/src/fs/org/jnode/fs/ext2/Ext2Directory.java 2012-08-10 06:37:15 UTC (rev 5911)
@@ -25,7 +25,6 @@
import java.util.ArrayList;
import java.util.Iterator;
import java.util.NoSuchElementException;
-
import org.apache.log4j.Level;
import org.apache.log4j.Logger;
import org.jnode.fs.FSEntry;
@@ -56,10 +55,16 @@
this.entry = entry;
log.setLevel(Level.DEBUG);
boolean readOnly;
- if ((iNode.getFlags() & Ext2Constants.EXT2_INDEX_FL) == 1)
+ if ((iNode.getFlags() & Ext2Constants.EXT2_INDEX_FL) != 0 ||
+ (iNode.getFlags() & Ext2Constants.EXT4_INODE_EXTENTS_FLAG) != 0) {
readOnly = true; //force readonly
- else
+
+ if ((iNode.getFlags() & Ext2Constants.EXT4_INODE_EXTENTS_FLAG) != 0)
+ log.info("inode uses extents: " + entry);
+ }
+ else {
readOnly = fs.isReadOnly();
+ }
setRights(true, !readOnly);
log.debug("directory size: " + iNode.getSize());
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|