squashfs: add xattr support configure option
Signed-off-by: Phillip Lougher <phillip@lougher.demon.co.uk>
This commit is contained in:
@@ -26,6 +26,17 @@ config SQUASHFS
|
|||||||
|
|
||||||
If unsure, say N.
|
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
|
config SQUASHFS_EMBEDDED
|
||||||
|
|
||||||
bool "Additional option for memory-constrained systems"
|
bool "Additional option for memory-constrained systems"
|
||||||
|
@@ -5,5 +5,5 @@
|
|||||||
obj-$(CONFIG_SQUASHFS) += squashfs.o
|
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 += 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 += 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
|
||||||
|
|
||||||
|
@@ -46,6 +46,7 @@
|
|||||||
#include "squashfs_fs_sb.h"
|
#include "squashfs_fs_sb.h"
|
||||||
#include "squashfs_fs_i.h"
|
#include "squashfs_fs_i.h"
|
||||||
#include "squashfs.h"
|
#include "squashfs.h"
|
||||||
|
#include "xattr.h"
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Initialise VFS inode with the base inode information common to all
|
* Initialise VFS inode with the base inode information common to all
|
||||||
|
@@ -63,6 +63,7 @@
|
|||||||
#include "squashfs_fs_sb.h"
|
#include "squashfs_fs_sb.h"
|
||||||
#include "squashfs_fs_i.h"
|
#include "squashfs_fs_i.h"
|
||||||
#include "squashfs.h"
|
#include "squashfs.h"
|
||||||
|
#include "xattr.h"
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Lookup name in the directory index, returning the location of the metadata
|
* Lookup name in the directory index, returning the location of the metadata
|
||||||
|
@@ -76,12 +76,6 @@ extern int squashfs_read_inode(struct inode *, long long);
|
|||||||
/* xattr.c */
|
/* xattr.c */
|
||||||
extern ssize_t squashfs_listxattr(struct dentry *, char *, size_t);
|
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
|
* Inodes, files, decompressor and xattr operations
|
||||||
*/
|
*/
|
||||||
|
@@ -43,6 +43,7 @@
|
|||||||
#include "squashfs_fs_i.h"
|
#include "squashfs_fs_i.h"
|
||||||
#include "squashfs.h"
|
#include "squashfs.h"
|
||||||
#include "decompressor.h"
|
#include "decompressor.h"
|
||||||
|
#include "xattr.h"
|
||||||
|
|
||||||
static struct file_system_type squashfs_fs_type;
|
static struct file_system_type squashfs_fs_type;
|
||||||
static const struct super_operations squashfs_super_ops;
|
static const struct super_operations squashfs_super_ops;
|
||||||
@@ -272,6 +273,7 @@ allocate_xattr_table:
|
|||||||
if (IS_ERR(msblk->xattr_id_table)) {
|
if (IS_ERR(msblk->xattr_id_table)) {
|
||||||
err = PTR_ERR(msblk->xattr_id_table);
|
err = PTR_ERR(msblk->xattr_id_table);
|
||||||
msblk->xattr_id_table = NULL;
|
msblk->xattr_id_table = NULL;
|
||||||
|
if (err != -ENOTSUPP)
|
||||||
goto failed_mount;
|
goto failed_mount;
|
||||||
}
|
}
|
||||||
allocate_root:
|
allocate_root:
|
||||||
|
@@ -41,6 +41,7 @@
|
|||||||
#include "squashfs_fs_sb.h"
|
#include "squashfs_fs_sb.h"
|
||||||
#include "squashfs_fs_i.h"
|
#include "squashfs_fs_i.h"
|
||||||
#include "squashfs.h"
|
#include "squashfs.h"
|
||||||
|
#include "xattr.h"
|
||||||
|
|
||||||
static int squashfs_symlink_readpage(struct file *file, struct page *page)
|
static int squashfs_symlink_readpage(struct file *file, struct page *page)
|
||||||
{
|
{
|
||||||
|
45
fs/squashfs/xattr.h
Normal file
45
fs/squashfs/xattr.h
Normal file
@@ -0,0 +1,45 @@
|
|||||||
|
/*
|
||||||
|
* Squashfs - a compressed read only filesystem for Linux
|
||||||
|
*
|
||||||
|
* Copyright (c) 2010
|
||||||
|
* Phillip Lougher <phillip@lougher.demon.co.uk>
|
||||||
|
*
|
||||||
|
* 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
|
Reference in New Issue
Block a user