Skip to content

Commit

Permalink
squashfs: add xattr support configure option
Browse files Browse the repository at this point in the history
Signed-off-by: Phillip Lougher <[email protected]>
  • Loading branch information
Phillip Lougher committed May 17, 2010
1 parent 67f66cc commit 01e5b4e
Show file tree
Hide file tree
Showing 8 changed files with 63 additions and 8 deletions.
11 changes: 11 additions & 0 deletions fs/squashfs/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,17 @@ config SQUASHFS

If unsure, say N.

config SQUASHFS_XATTRS
bool "Squashfs XATTR support"
depends on SQUASHFS
default n
help
Saying Y here includes support for extended attributes (xattrs).
Xattrs are name:value pairs associated with inodes by
the kernel or by users (see the attr(5) manual page).

If unsure, say N.

config SQUASHFS_EMBEDDED

bool "Additional option for memory-constrained systems"
Expand Down
2 changes: 1 addition & 1 deletion fs/squashfs/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -5,5 +5,5 @@
obj-$(CONFIG_SQUASHFS) += squashfs.o
squashfs-y += block.o cache.o dir.o export.o file.o fragment.o id.o inode.o
squashfs-y += namei.o super.o symlink.o zlib_wrapper.o decompressor.o
squashfs-y += xattr.o xattr_id.o
squashfs-$(CONFIG_SQUASHFS_XATTRS) += xattr.o xattr_id.o

1 change: 1 addition & 0 deletions fs/squashfs/inode.c
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@
#include "squashfs_fs_sb.h"
#include "squashfs_fs_i.h"
#include "squashfs.h"
#include "xattr.h"

/*
* Initialise VFS inode with the base inode information common to all
Expand Down
1 change: 1 addition & 0 deletions fs/squashfs/namei.c
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,7 @@
#include "squashfs_fs_sb.h"
#include "squashfs_fs_i.h"
#include "squashfs.h"
#include "xattr.h"

/*
* Lookup name in the directory index, returning the location of the metadata
Expand Down
6 changes: 0 additions & 6 deletions fs/squashfs/squashfs.h
Original file line number Diff line number Diff line change
Expand Up @@ -76,12 +76,6 @@ extern int squashfs_read_inode(struct inode *, long long);
/* xattr.c */
extern ssize_t squashfs_listxattr(struct dentry *, char *, size_t);

/* xattr_id.c */
extern int squashfs_xattr_lookup(struct super_block *, unsigned int, int *,
int *, long long *);
extern __le64 *squashfs_read_xattr_id_table(struct super_block *, u64,
u64 *, int *);

/*
* Inodes, files, decompressor and xattr operations
*/
Expand Down
4 changes: 3 additions & 1 deletion fs/squashfs/super.c
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@
#include "squashfs_fs_i.h"
#include "squashfs.h"
#include "decompressor.h"
#include "xattr.h"

static struct file_system_type squashfs_fs_type;
static const struct super_operations squashfs_super_ops;
Expand Down Expand Up @@ -272,7 +273,8 @@ static int squashfs_fill_super(struct super_block *sb, void *data, int silent)
if (IS_ERR(msblk->xattr_id_table)) {
err = PTR_ERR(msblk->xattr_id_table);
msblk->xattr_id_table = NULL;
goto failed_mount;
if (err != -ENOTSUPP)
goto failed_mount;
}
allocate_root:
root = new_inode(sb);
Expand Down
1 change: 1 addition & 0 deletions fs/squashfs/symlink.c
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@
#include "squashfs_fs_sb.h"
#include "squashfs_fs_i.h"
#include "squashfs.h"
#include "xattr.h"

static int squashfs_symlink_readpage(struct file *file, struct page *page)
{
Expand Down
45 changes: 45 additions & 0 deletions fs/squashfs/xattr.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
/*
* Squashfs - a compressed read only filesystem for Linux
*
* Copyright (c) 2010
* Phillip Lougher <[email protected]>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2,
* or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*
* xattr.h
*/

#ifdef CONFIG_SQUASHFS_XATTRS
extern __le64 *squashfs_read_xattr_id_table(struct super_block *, u64,
u64 *, int *);
extern int squashfs_xattr_lookup(struct super_block *, unsigned int, int *,
int *, long long *);
#else
static inline __le64 *squashfs_read_xattr_id_table(struct super_block *sb,
u64 start, u64 *xattr_table_start, int *xattr_ids)
{
ERROR("Xattrs in filesystem, these will be ignored\n");
return ERR_PTR(-ENOTSUPP);
}

static inline int squashfs_xattr_lookup(struct super_block *sb,
unsigned int index, int *count, int *size, long long *xattr)
{
return 0;
}
#define squashfs_listxattr NULL
#define generic_getxattr NULL
#define squashfs_xattr_handlers NULL
#endif

0 comments on commit 01e5b4e

Please sign in to comment.