* Re: [LARTC] Tocken Bucket with priority?
From: Andreas Hasenack @ 2006-04-05 13:24 UTC (permalink / raw)
To: lartc
In-Reply-To: <e67264960604050618t481a1f79uffe3065ac2ebe56f@mail.gmail.com>
On Wed, Apr 05, 2006 at 03:18:06PM +0200, Emanuele Colombo wrote:
> Hi. I'm trying to get a traffic shaper like this:
>
>
> ------
> VoIP pkts --> | |_|
> ------ \ |
> ---O ->
> ------ /
> Data pkts --> |
> ------
>
> In this shaper voip packets are in a different queue than any other kind of
> packet. I want a data packet to be served only when no packets are in the
> voip queue (when voip queue is empty).
> Furthermore the total traffic that leaves this shaper needs to be limited to
> a specific (and precise) value of bandwidth, like a token bucket.
>
>
> I can't use something like this (PRIO + TBF) because in this way when "data
> congestion" happens, voip packets may be lost too(packet drop appens on the
> TBF queue):
>
> ------
> VoIP pkts --> | |_|
> ------ \ ----- |
> O ---> |---O ->
> ------ / -----
> Data pkts --> |
> ------
>
> I also can't use HTB because it doesn't provide a priority mechanism like my
> needs, and CBQ because his bandwidth limiting algorithm isn't very precise
> (according to the documentation).
What about using HTB and *then* using PRIO as its leaf class? You would
use HTB only to shape.
_______________________________________________
LARTC mailing list
LARTC@mailman.ds9a.nl
http://mailman.ds9a.nl/cgi-bin/mailman/listinfo/lartc
^ permalink raw reply
* Re: Cygwin can't handle huge packfiles?
From: Kees-Jan Dijkzeul @ 2006-04-05 13:24 UTC (permalink / raw)
To: git
In-Reply-To: <Pine.LNX.4.64.0604030734440.3781@g5.osdl.org>
On 4/3/06, Linus Torvalds <torvalds@osdl.org> wrote:
[...]
> That's not hugely fundamental, but I didn't expect people to hit it this
> quickly. What kind of project has a 1.5GB pack-file _already_? I hope it's
> fifteen years of history (so that we'll have another fifteen years before
> we'll have to worry about 4GB pack-files ;)
I'm trying to get Git to manage my companies source tree. We're
writing software for digital TV sets. Anyway, the archive is about 5Gb
in size and contains binaries, zip files, excel sheets meeting minutes
and whatnot. So it doesn't compress very well. The 1.5Gb pack file
hardly contains any history at all (five commits or so). On the flip
side, for now I'll be the only one adding to the archive, so at least
it will not grow that fast ;-)
Anyway, to reconstitute the tree, I need very nearly the entire pack,
so limiting the pack size won't do much good, as git will still try to
allocate a total of 1.5Gb memory (which, unfortunately, isn't there
:-)
Inspired by a patch of Alex Riesen (thanks, Alex), I tried to use the
regular mmap for mapping pack files, only to discover that I compile
without defining "NO_MMAP", so I've been using the stock mmap all
along. So now I'm thinking that the cygwin mmap also does a
malloc-and-read, just like git does with NO_MMAP. So I'll continue to
investigate in that direction.
To be continued...
Groetjes,
Kees-Jan
^ permalink raw reply
* Re: FW: [Xen-changelog] Added tag 3.0.2-branchedforchangesetd0d3fef37685be264a7f52201f8ef44c030daad3
From: Michael Paesold @ 2006-04-05 13:23 UTC (permalink / raw)
To: Ian Pratt, Kamble, Nitin A, xen-devel
In-Reply-To: <A95E2296287EAD4EB592B5DEEFCE0E9D4BA101@liverpoolst.ad.cl.cam.ac.uk>
Ian Pratt wrote:
> > Hi Keir,
> > What is the 3.0.2-breanched tag for?
>
> 3.0.2 has been forked from -unstable into -testing, where it is
> undergoing final testing before release.
>
> [I happen to know that the process got stalled because a regression has
> been detected, so the release won't happen today.]
I have noticed that the 3.0.2 release candidate tree/repository is obviously
not the one available as 3.0-testing on the XenSource website. Is it
available for public consumption anywhere? Guessing from some emails, I
think that you are applying bugfixes to that -testing repo, no? I would like
to test this rc before release, but without access to it, I am limited to
what is available in xen-unstable.
Best Regards,
Michael Paesold
^ permalink raw reply
* [2.6.16 PATCH] Filessytem Events Reporter V2
From: Yi Yang @ 2006-04-05 13:21 UTC (permalink / raw)
To: LKML; +Cc: Andrew Morton, Evgeniy Polyakov, Matt Helsley
Compared with Filesystem Events Reporter v1, the following changes are done:
- Use workqueue/keventd instead of kfseventd.
- fsevent_mask can be set by sysctl and proc
interface.
- Add missed spinlock
- Ensure fsevent sequence number is uniqe
This patch implements a filsystem events report facitily, Filesystem Events
Reporter, the user can monitor filesystem activities via it, currently, it
can monitor access, attribute change, open, create, modify, delete,
move and close of any file or directory as well as mount/umount.
Every filesystem event will include tgid, uid and gid of the process
which triggered this event, process name, file or directory name
operated by it.
Filesystem Events Reporter is never a duplicate of inotify, inotify
just concerns change on file or directory, Beagle uses it to watch
file changes in order to regenerate index for it, inotify can't tell
us who did that change and what is its process name, but filesystem
events reporter can do these, moreover inotify's overhead is greater
than filesystem events reporter, inotify needs compare inode with
watched file or directories list to decide whether it should generate an
inotify_event, some locks also increase overhead, filesystem event
connector hasn't these overhead, it just generates a fsevent and send.
To be important, filesystem event reporter doesn't add any new system
call, the user space application can make use of it by netlink socket,
but inotify added several system calls, many events mechanism in kernel
have used netlink as communication way with user space, for example,
KOBJECT_UEVENT, PROC_EVENTS, to use netlink will make it more possible
to unify events interface to netlink, the user space application can use
it very easy.
Every application using fsevent can set its own fsevent filter list
without effect in other applications using fsevent, there are three
filter lists, they are pid filter list, uid filetr list and gid
filter list, respectively, moreover, there is a fsevent mask used to
control those fsevents which fail to match three filter lists, an
application using fsevent can listen those fsevents it want to
monitor and ignore those fsevents it doesn't interest in by set
series of filters, there is a fsevent mask used to take effects on
all the applications using fsevent, it can be set by sysctl and proc
interface.
fs/Kconfig | 10
fs/Makefile | 1
fs/fsevent.c | 598 +++++++++++++++++++++++++++++++++++++++++++++++
fs/namespace.c | 12
include/linux/fsevent.h | 131 ++++++++++
include/linux/fsnotify.h | 37 ++
include/linux/netlink.h | 1
7 files changed, 790 insertions(+)
Signed-off-by: Yi Yang <yang.y.yi@gmail.com>
--- a/include/linux/netlink.h.orig 2006-03-31 22:58:50.000000000 +0800
+++ b/include/linux/netlink.h 2006-04-05 20:34:23.000000000 +0800
@@ -21,6 +21,7 @@
#define NETLINK_DNRTMSG 14 /* DECnet routing messages */
#define NETLINK_KOBJECT_UEVENT 15 /* Kernel messages to userspace */
#define NETLINK_GENERIC 16
+#define NETLINK_FSEVENT 17 /* File system events to userspace */
#define MAX_LINKS 32
--- a/include/linux/fsnotify.h.orig 2006-01-03 11:21:10.000000000 +0800
+++ b/include/linux/fsnotify.h 2006-04-03 22:12:52.000000000 +0800
@@ -15,6 +15,7 @@
#include <linux/dnotify.h>
#include <linux/inotify.h>
+#include <linux/fsevent.h>
/*
* fsnotify_move - file old_name at old_dir was moved to new_name at new_dir
@@ -45,6 +46,8 @@ static inline void fsnotify_move(struct
if (source) {
inotify_inode_queue_event(source, IN_MOVE_SELF, 0, NULL);
}
+ raise_fsevent_move(old_dir, old_name, new_dir, new_name,
+ FSEVENT_MOVE | (isdir?FSEVENT_ISDIR:0));
}
/*
@@ -56,6 +59,8 @@ static inline void fsnotify_nameremove(s
isdir = IN_ISDIR;
dnotify_parent(dentry, DN_DELETE);
inotify_dentry_parent_queue_event(dentry, IN_DELETE|isdir, 0, dentry->d_name.name);
+ raise_fsevent(dentry,
+ FSEVENT_DELETE | (isdir?FSEVENT_ISDIR:0));
}
/*
@@ -74,6 +79,7 @@ static inline void fsnotify_create(struc
{
inode_dir_notify(inode, DN_CREATE);
inotify_inode_queue_event(inode, IN_CREATE, 0, name);
+ raise_fsevent_create(inode, name, FSEVENT_CREATE);
}
/*
@@ -83,6 +89,8 @@ static inline void fsnotify_mkdir(struct
{
inode_dir_notify(inode, DN_CREATE);
inotify_inode_queue_event(inode, IN_CREATE | IN_ISDIR, 0, name);
+ raise_fsevent_create(inode, name,
+ FSEVENT_CREATE | FSEVENT_ISDIR);
}
/*
@@ -99,6 +107,8 @@ static inline void fsnotify_access(struc
dnotify_parent(dentry, DN_ACCESS);
inotify_dentry_parent_queue_event(dentry, mask, 0, dentry->d_name.name);
inotify_inode_queue_event(inode, mask, 0, NULL);
+ raise_fsevent(dentry, FSEVENT_ACCESS |
+ ((S_ISDIR(inode->i_mode))?FSEVENT_ISDIR:0));
}
/*
@@ -115,6 +125,8 @@ static inline void fsnotify_modify(struc
dnotify_parent(dentry, DN_MODIFY);
inotify_dentry_parent_queue_event(dentry, mask, 0, dentry->d_name.name);
inotify_inode_queue_event(inode, mask, 0, NULL);
+ raise_fsevent(dentry, FSEVENT_MODIFY |
+ ((S_ISDIR(inode->i_mode))?FSEVENT_ISDIR:0));
}
/*
@@ -130,6 +142,9 @@ static inline void fsnotify_open(struct
inotify_dentry_parent_queue_event(dentry, mask, 0, dentry->d_name.name);
inotify_inode_queue_event(inode, mask, 0, NULL);
+ raise_fsevent(dentry, FSEVENT_OPEN |
+ ((S_ISDIR(inode->i_mode))?FSEVENT_ISDIR:0));
+
}
/*
@@ -148,6 +163,8 @@ static inline void fsnotify_close(struct
inotify_dentry_parent_queue_event(dentry, mask, 0, name);
inotify_inode_queue_event(inode, mask, 0, NULL);
+ raise_fsevent(dentry, FSEVENT_CLOSE |
+ ((S_ISDIR(inode->i_mode))?FSEVENT_ISDIR:0));
}
/*
@@ -163,6 +180,8 @@ static inline void fsnotify_xattr(struct
inotify_dentry_parent_queue_event(dentry, mask, 0, dentry->d_name.name);
inotify_inode_queue_event(inode, mask, 0, NULL);
+ raise_fsevent(dentry, FSEVENT_MODIFY_ATTRIB |
+ ((S_ISDIR(inode->i_mode))?FSEVENT_ISDIR:0));
}
/*
@@ -213,6 +232,24 @@ static inline void fsnotify_change(struc
inotify_dentry_parent_queue_event(dentry, in_mask, 0,
dentry->d_name.name);
}
+
+#ifdef CONFIG_FS_EVENTS
+ {
+ u32 fsevent_mask = 0;
+ if (ia_valid & (ATTR_UID | ATTR_GID | ATTR_MODE))
+ fsevent_mask |= FSEVENT_MODIFY_ATTRIB;
+ if ((ia_valid & ATTR_ATIME) && (ia_valid & ATTR_MTIME))
+ fsevent_mask |= FSEVENT_MODIFY_ATTRIB;
+ else if (ia_valid & ATTR_ATIME)
+ fsevent_mask |= FSEVENT_ACCESS;
+ else if (ia_valid & ATTR_MTIME)
+ fsevent_mask |= FSEVENT_MODIFY;
+ if (ia_valid & ATTR_SIZE)
+ fsevent_mask |= FSEVENT_MODIFY;
+ if (fsevent_mask)
+ raise_fsevent(dentry, fsevent_mask);
+ }
+#endif /* CONFIG_FS_EVENTS */
}
#ifdef CONFIG_INOTIFY /* inotify helpers */
--- a/fs/namespace.c.orig 2006-03-25 23:13:42.000000000 +0800
+++ b/fs/namespace.c 2006-04-03 22:12:52.000000000 +0800
@@ -25,6 +25,7 @@
#include <linux/mount.h>
#include <asm/uaccess.h>
#include <asm/unistd.h>
+#include <linux/fsevent.h>
#include "pnode.h"
extern int __init init_rootfs(void);
@@ -612,6 +613,13 @@ asmlinkage long sys_umount(char __user *
goto dput_and_out;
retval = do_umount(nd.mnt, flags);
+
+ if (retval == 0) {
+ char * tmp = getname(name);
+ raise_fsevent_umount(tmp);
+ putname(tmp);
+ }
+
dput_and_out:
path_release_on_umount(&nd);
out:
@@ -1459,6 +1467,10 @@ asmlinkage long sys_mount(char __user *
retval = do_mount((char *)dev_page, dir_page, (char *)type_page,
flags, (void *)data_page);
unlock_kernel();
+
+ if (retval == 0)
+ raise_fsevent_mount((char *)dev_page, dir_page);
+
free_page(data_page);
out3:
--- a/fs/Kconfig.orig 2006-03-31 21:23:20.000000000 +0800
+++ b/fs/Kconfig 2006-04-03 22:12:52.000000000 +0800
@@ -405,6 +405,16 @@ config INOTIFY
If unsure, say Y.
+config FS_EVENTS
+ tristate "Report filesystem events to userspace"
+ ---help---
+ Provide a facility that reports filesystem events to userspace. The
+ reported event include access, write, utime, chmod, chown, chgrp,
+ close, open, create, rename, unlink, mkdir, rmdir, mount, umount.
+
+ The user can set filesystem events filter to filter its events, so
+ that he just get those events he concerns.
+
config QUOTA
bool "Quota support"
help
--- a/fs/Makefile.orig 2006-03-31 21:23:33.000000000 +0800
+++ b/fs/Makefile 2006-04-03 22:12:52.000000000 +0800
@@ -13,6 +13,7 @@ obj-y := open.o read_write.o file_table.
ioprio.o pnode.o drop_caches.o
obj-$(CONFIG_INOTIFY) += inotify.o
+obj-$(CONFIG_FS_EVENTS) += fsevent.o
obj-$(CONFIG_EPOLL) += eventpoll.o
obj-$(CONFIG_COMPAT) += compat.o compat_ioctl.o
--- /dev/null 2003-01-30 18:24:37.000000000 +0800
+++ b/include/linux/fsevent.h 2006-04-04 23:18:01.000000000 +0800
@@ -0,0 +1,131 @@
+/*
+ * fsevent.h - filesystem events connector
+ *
+ * Copyright (C) 2006 Yi Yang <yang.y.yi@gmail.com>
+ * Based on cn_proc.h by Matt Helsley, IBM Corp
+ *
+ * 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 of the License, 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, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#ifndef LINUX_FSEVENT_H
+#define LINUX_FSEVENT_H
+
+#include <linux/types.h>
+#include <linux/time.h>
+#include <linux/netlink.h>
+
+enum fsevent_type {
+ FSEVENT_ACCESS = 0x00000001, /* File was accessed */
+ FSEVENT_MODIFY = 0x00000002, /* File was modified */
+ FSEVENT_MODIFY_ATTRIB = 0x00000004, /* Metadata changed */
+ FSEVENT_CLOSE = 0x00000008, /* File was closed */
+ FSEVENT_OPEN = 0x00000010, /* File was opened */
+ FSEVENT_MOVE = 0x00000020, /* File was moved */
+ FSEVENT_CREATE = 0x00000040, /* File was created */
+ FSEVENT_DELETE = 0x00000080, /* File was deleted */
+ FSEVENT_MOUNT = 0x00000100, /* File system is mounted */
+ FSEVENT_UMOUNT = 0x00000200, /* File system is umounted */
+
+ /* The following definitions are command types for fsevent filter
+ * or acknowlege types of the corresponding commands
+ */
+ FSEVENT_FILTER_ALL = 0x08000000, /* For all events */
+ FSEVENT_FILTER_PID = 0x10000000, /* For some process ID */
+ FSEVENT_FILTER_UID = 0x20000000, /* For some user ID */
+ FSEVENT_FILTER_GID = 0x40000000, /* For some group ID */
+
+ FSEVENT_ISDIR = 0x80000000 /* It is set for a dir */
+};
+
+#define FSEVENT_MASK 0x800003ff
+
+typedef unsigned long fsevent_mask_t;
+
+enum filter_control {
+ FSEVENT_FILTER_LISTEN = 1, /* Listen fsevents mask defines*/
+ FSEVENT_FILTER_IGNORE , /* Ignore fsevents mask defines*/
+ FSEVENT_FILTER_REMOVE, /* Remove a given filter */
+};
+
+struct fsevent_filter {
+ /* filter type, it just is one of them
+ * FSEVENT_FILTER_ALL
+ * FSEVENT_FILTER_PID
+ * FSEVENT_FILTER_UID
+ * FSEVENT_FILTER_GID
+ */
+ enum fsevent_type type; /* filter type */
+
+ /* mask of file system events the user listen or ignore
+ * if the user need to ignore all the events of some pid
+ * , gid or uid, he(she) must set mask to FSEVENT_MASK.
+ */
+ fsevent_mask_t mask;
+ union {
+ pid_t pid;
+ uid_t uid;
+ gid_t gid;
+ } id;
+
+ enum filter_control control;
+};
+
+struct fsevent {
+ __u32 type;
+ __u32 cpu;
+ struct timespec timestamp;
+ pid_t pid;
+ uid_t uid;
+ gid_t gid;
+ int err;
+ __u32 len;
+ __u32 pname_len;
+ __u32 fname_len;
+ __u32 new_fname_len;
+ char name[0];
+};
+
+#define FSEVENT_FILTER_MSGSIZE \
+ (sizeof(struct fsevent_filter) + sizeof(struct nlmsghdr))
+
+#ifdef __KERNEL__
+#ifdef CONFIG_FS_EVENTS
+extern void raise_fsevent(struct dentry * dentryp, u32 mask);
+extern void raise_fsevent_move(struct inode * olddir, const char * oldname,
+ struct inode * newdir, const char * newname, u32 mask);
+extern void raise_fsevent_create(struct inode * inode,
+ const char * name, u32 mask);
+extern void raise_fsevent_mount(const char * devname, const char * mountpoint);
+extern void raise_fsevent_umount(const char * mountpoint);
+#else
+static void raise_fsevent(struct dentry * dentryp, u32 mask)
+{}
+
+static void raise_fsevent_move(struct inode * olddir, const char * oldname,
+ struct inode * newdir, const char * newname, u32 mask)
+{}
+
+static void raise_fsevent_create(struct inode * inode,
+ const char * name, u32 mask)
+{}
+
+static void raise_fsevent_mount(const char * devname, const char * mountpoint)
+{}
+
+static void raise_fsevent_umount(const char * mountpoint)
+{}
+#endif /* CONFIG_FS_EVENTS */
+#endif /* __KERNEL__ */
+#endif /* LINUX_FSEVENT_H */
--- /dev/null 2003-01-30 18:24:37.000000000 +0800
+++ b/fs/fsevent.c 2006-04-05 20:52:53.000000000 +0800
@@ -0,0 +1,598 @@
+/*
+ * fsevent.c
+ *
+ * 2006 Copyright (c) Yi Yang <yang.y.yi@gmail.com>
+ * All rights reserved.
+ *
+ * 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 of the License, 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, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#include <linux/kernel.h>
+#include <linux/module.h>
+#include <linux/skbuff.h>
+#include <linux/netlink.h>
+#include <linux/moduleparam.h>
+#include <linux/fsevent.h>
+#include <linux/skbuff.h>
+#include <net/sock.h>
+#include <linux/list.h>
+#include <linux/percpu.h>
+#include <linux/cpu.h>
+#include <linux/kthread.h>
+#include <linux/notifier.h>
+#include <linux/compiler.h>
+#include <linux/workqueue.h>
+#include <linux/sysctl.h>
+
+#define FSEVENT_MASK_CTL_NAME -2
+
+static DEFINE_PER_CPU(struct sk_buff_head, fsevent_send_queue);
+static DEFINE_PER_CPU(struct work_struct, fsevent_work);
+
+typedef struct pid_filter {
+ pid_t pid;
+ u32 mask;
+ struct list_head list;
+} pid_filter;
+
+typedef struct uid_filter {
+ uid_t uid;
+ u32 mask;
+ struct list_head list;
+} uid_filter;
+
+typedef struct gid_filter {
+ gid_t gid;
+ u32 mask;
+ struct list_head list;
+} gid_filter;
+
+typedef struct fsevent_listener {
+ pid_t pid;
+ struct list_head pid_filter_list_head;
+ struct list_head uid_filter_list_head;
+ struct list_head gid_filter_list_head;
+ u32 mask;
+ struct list_head list;
+} listener;
+
+
+/* The netlink socket. */
+static struct sock * fsevent_sock = NULL;
+static LIST_HEAD(listener_list_head);
+static DEFINE_SPINLOCK(listener_list_lock);
+
+static atomic_t fsevent_count = ATOMIC_INIT(0);
+static int fsevent_burst_limit = 100;
+static int fsevent_ratelimit = 5 * HZ;
+static unsigned long last = 0;
+static int fsevent_sum = 0;
+static u32 fsevents_mask = FSEVENT_MASK;
+static atomic_t fsevent_listener_num = ATOMIC_INIT(0);
+
+static inline void get_seq(__u32 *ts, int *cpu)
+{
+ *ts = atomic_inc_return(&fsevent_count);
+ *cpu = smp_processor_id();
+}
+
+static void append_string(char **dest, const char *src, size_t len)
+{
+ strncpy(*dest, src, len);
+ (*dest)[len] = '\0';
+ *dest += len + 1;
+}
+
+static inline int filter_fsevent(u32 filter_mask, u32 event_mask)
+{
+ event_mask &= FSEVENT_MASK;
+ event_mask &= filter_mask;
+ if (event_mask == 0) {
+ return -1;
+ }
+ return 0;
+}
+
+static int filter_fsevent_all(u32 * mask)
+{
+ int ret = 0;
+
+ (*mask) &= FSEVENT_MASK;
+
+ if ((((*mask) & FSEVENT_ISDIR) == FSEVENT_ISDIR)
+ && ((fsevents_mask & FSEVENT_ISDIR) == 0)) {
+ ret = -1;
+ goto out;
+ }
+
+ (*mask) &= fsevents_mask;
+ if ((*mask) == 0) {
+ ret = -5;
+ }
+
+out:
+ return ret;
+}
+
+static void fsevent_send(struct sk_buff * skb)
+{
+ struct sk_buff_head * head = &get_cpu_var(fsevent_send_queue);
+ skb_queue_tail(head, skb);
+ schedule_work(&per_cpu(fsevent_work, smp_processor_id()));
+ put_cpu_var(fsevent_send_queue);
+}
+
+int __raise_fsevent(const char * oldname, const char * newname, u32 mask)
+{
+ struct fsevent *event;
+ int namelen = 0;
+ char * nameptr = NULL;
+ unsigned int size;
+ struct nlmsghdr * nlhdr;
+ struct sk_buff * skb = NULL;
+
+ if (filter_fsevent_all(&mask) != 0)
+ return -1;
+
+ if (atomic_read(&fsevent_listener_num) <= 0)
+ return -1;
+
+ if (jiffies - last <= fsevent_ratelimit) {
+ if (fsevent_sum > fsevent_burst_limit)
+ return -2;
+ fsevent_sum++;
+ } else {
+ last = jiffies;
+ fsevent_sum = 0;
+ }
+
+ namelen = strlen(current->comm) + strlen(oldname) + 2;
+ if (newname)
+ namelen += strlen(newname) + 1;
+
+ size = NLMSG_SPACE(sizeof(struct fsevent) + namelen);
+
+ skb = alloc_skb(size, GFP_KERNEL);
+ if (!skb)
+ return -ENOMEM;
+
+ nlhdr = NLMSG_PUT(skb, 0, 0, NLMSG_DONE, size - sizeof(*nlhdr));
+ event = NLMSG_DATA(nlhdr);
+
+ get_seq(&(nlhdr->nlmsg_seq), &event->cpu);
+ ktime_get_ts(&event->timestamp);
+ event->type = mask;
+ event->pid = current->tgid;
+ event->uid = current->uid;
+ event->gid = current->gid;
+ nameptr = event->name;
+ event->pname_len = strlen(current->comm);
+ append_string(&nameptr, current->comm, event->pname_len);
+ event->fname_len = strlen(oldname);
+ append_string(&nameptr, oldname, event->fname_len);
+ event->len = event->pname_len + event->fname_len + 2;
+ event->new_fname_len = 0;
+ if (newname) {
+ event->new_fname_len = strlen(newname);
+ append_string(&nameptr, newname, event->new_fname_len);
+ event->len += event->new_fname_len + 1;
+ }
+ fsevent_send(skb);
+ return 0;
+
+nlmsg_failure:
+ kfree_skb(skb);
+ return -1;
+}
+
+void raise_fsevent(struct dentry * dentryp, u32 mask)
+{
+ if (dentryp->d_inode && (MAJOR(dentryp->d_inode->i_rdev) == 4))
+ return;
+ __raise_fsevent(dentryp->d_name.name, NULL, mask);
+}
+EXPORT_SYMBOL_GPL(raise_fsevent);
+
+void raise_fsevent_create(struct inode * inode, const char * name, u32 mask)
+{
+ __raise_fsevent(name, NULL, mask);
+}
+EXPORT_SYMBOL_GPL(raise_fsevent_create);
+
+void raise_fsevent_move(struct inode * olddir, const char * oldname,
+ struct inode * newdir, const char * newname, u32 mask)
+{
+ __raise_fsevent(oldname, newname, mask);
+}
+EXPORT_SYMBOL_GPL(raise_fsevent_move);
+
+void raise_fsevent_mount(const char * devname, const char * mountpoint)
+{
+ __raise_fsevent(devname, mountpoint, FSEVENT_MOUNT);
+}
+
+void raise_fsevent_umount(const char * mountpoint)
+{
+ __raise_fsevent(mountpoint, NULL, FSEVENT_UMOUNT);
+}
+
+static int fsevent_ack(enum fsevent_type type, pid_t pid, u32 seq)
+{
+ struct fsevent *event;
+ unsigned int size;
+ struct sk_buff * skb = NULL;
+ struct nlmsghdr * nlhdr = NULL;
+
+ size = NLMSG_SPACE(sizeof(struct fsevent));
+
+ skb = alloc_skb(size, GFP_KERNEL);
+ if (!skb)
+ return -ENOMEM;
+
+ nlhdr = NLMSG_PUT(skb, 0, seq, NLMSG_DONE, size - sizeof(*nlhdr));
+ event = NLMSG_DATA(nlhdr);
+
+ ktime_get_ts(&event->timestamp);
+ event->cpu = -1;
+ event->type = type;
+ event->pid = 0;
+ event->uid = 0;
+ event->gid = 0;
+ event->len = 0;
+ event->pname_len = 0;
+ event->fname_len = 0;
+ event->new_fname_len = 0;
+ event->err = 0;
+
+ NETLINK_CB(skb).dst_group = 0;
+ NETLINK_CB(skb).dst_pid = pid;
+ NETLINK_CB(skb).pid = 0;
+
+ return (netlink_unicast(fsevent_sock, skb, pid, MSG_DONTWAIT));
+
+nlmsg_failure:
+ kfree_skb(skb);
+ return -1;
+}
+
+static void set_fsevent_mask(u32 * to_mask, u32 from_mask, int mode)
+{
+ if (mode == FSEVENT_FILTER_IGNORE)
+ (*to_mask) &= ~(from_mask);
+ else if (mode == FSEVENT_FILTER_LISTEN)
+ (*to_mask) |= from_mask;
+}
+
+#define DEFINE_FILTER_FIND_FUNC(type, key) \
+ type * find_##type(struct list_head * head, key##_t id) \
+ { \
+ int alloc_flag = 1; \
+ type * entry = NULL; \
+ \
+ list_for_each_entry(entry, head, list) { \
+ if (entry->key == id) { \
+ alloc_flag = 0; \
+ break; \
+ } \
+ } \
+ \
+ if (alloc_flag == 1) { \
+ entry = (type *)kmalloc(sizeof(type), GFP_ATOMIC); \
+ if (entry == NULL) \
+ return NULL; \
+ memset(entry, 0, sizeof(type)); \
+ entry->key = id; \
+ list_add_tail(&(entry->list), head); \
+ } \
+ return entry; \
+ } \
+
+DEFINE_FILTER_FIND_FUNC(pid_filter, pid)
+
+DEFINE_FILTER_FIND_FUNC(uid_filter, uid)
+
+DEFINE_FILTER_FIND_FUNC(gid_filter, gid)
+
+DEFINE_FILTER_FIND_FUNC(listener, pid)
+
+static void set_fsevent_filter(struct fsevent_filter * filter, pid_t pid)
+{
+ enum fsevent_type type;
+ u32 mask = 0;
+ int control = 0;
+ listener * listenerp = NULL;
+ pid_filter * pfilter = NULL;
+ uid_filter * ufilter = NULL;
+ gid_filter * gfilter = NULL;
+
+
+ mask = filter->mask;
+ control = filter->control;
+ type = filter->type;
+ mask &= FSEVENT_MASK;
+ if (mask == 0)
+ goto out;
+
+ spin_lock(&listener_list_lock);
+ listenerp = find_listener(&listener_list_head, pid);
+ if (unlikely(listenerp == NULL)) {
+ spin_unlock(&listener_list_lock);
+ return;
+ }
+
+ if (!(listenerp->pid_filter_list_head.next)) {
+ INIT_LIST_HEAD(&(listenerp->pid_filter_list_head));
+ INIT_LIST_HEAD(&(listenerp->uid_filter_list_head));
+ INIT_LIST_HEAD(&(listenerp->gid_filter_list_head));
+ }
+
+ if ((type & FSEVENT_FILTER_ALL) == FSEVENT_FILTER_ALL) {
+ if (control == FSEVENT_FILTER_REMOVE) {
+ atomic_dec(&fsevent_listener_num);
+ list_del(&(listenerp->list));
+ kfree(listenerp);
+ } else
+ set_fsevent_mask(&(listenerp->mask), mask, control);
+ } else if ((type & FSEVENT_FILTER_PID) == FSEVENT_FILTER_PID) {
+ pfilter = find_pid_filter(&(listenerp->pid_filter_list_head),
+ filter->id.pid);
+ if (unlikely(pfilter == NULL))
+ return;
+
+ if (control == FSEVENT_FILTER_REMOVE) {
+ list_del(&(pfilter->list));
+ kfree(pfilter);
+ } else
+ set_fsevent_mask(&(pfilter->mask), mask, control);
+ } else if ((type & FSEVENT_FILTER_UID) == FSEVENT_FILTER_UID) {
+ ufilter = find_uid_filter(&(listenerp->uid_filter_list_head),
+ filter->id.uid);
+ if (unlikely(ufilter == NULL))
+ return;
+
+ if (control == FSEVENT_FILTER_REMOVE) {
+ list_del(&(ufilter->list));
+ kfree(ufilter);
+ } else
+ set_fsevent_mask(&(ufilter->mask), mask, control);
+ } else if ((type & FSEVENT_FILTER_GID) == FSEVENT_FILTER_GID) {
+ gfilter = find_gid_filter(&(listenerp->gid_filter_list_head),
+ filter->id.gid);
+ if (unlikely(gfilter == NULL))
+ return;
+
+ if (control == FSEVENT_FILTER_REMOVE) {
+ list_del(&(gfilter->list));
+ kfree(gfilter);
+ } else
+ set_fsevent_mask(&(gfilter->mask), mask, control);
+ }
+ spin_unlock(&listener_list_lock);
+
+out:
+ fsevent_ack(type, pid, 0);
+}
+
+static listener * find_fsevent_listener(pid_t pid)
+{
+ listener * listenerp = NULL;
+ spin_lock(&listener_list_lock);
+ list_for_each_entry(listenerp, &listener_list_head, list) {
+ if (listenerp->pid == pid) {
+ spin_unlock(&listener_list_lock);
+ return listenerp;
+ }
+ }
+ spin_unlock(&listener_list_lock);
+ return NULL;
+}
+
+static void cleanup_dead_listener(listener * x)
+{
+ pid_filter * p = NULL, * pq = NULL;
+ uid_filter * u = NULL, * uq = NULL;
+ gid_filter * g = NULL, * gq = NULL;
+
+ if (p == NULL)
+ return;
+
+ list_del(&(x->list));
+
+ list_for_each_entry_safe(p, pq, &(x->pid_filter_list_head), list) {
+ list_del(&(p->list));
+ kfree(p);
+ }
+
+ list_for_each_entry_safe(u, uq, &(x->uid_filter_list_head), list) {
+ list_del(&(u->list));
+ kfree(u);
+ }
+
+ list_for_each_entry_safe(g, gq, &(x->gid_filter_list_head), list) {
+ list_del(&(g->list));
+ kfree(g);
+ }
+
+ kfree(x);
+}
+
+static void fsevent_recv(struct sock *sk, int len)
+{
+ struct sk_buff *skb = NULL;
+ struct nlmsghdr *nlhdr = NULL;
+ struct fsevent_filter * filter = NULL;
+ pid_t pid;
+
+ while ((skb = skb_dequeue(&sk->sk_receive_queue)) != NULL) {
+ skb_get(skb);
+ if (skb->len >= FSEVENT_FILTER_MSGSIZE) {
+ nlhdr = (struct nlmsghdr *)skb->data;
+ filter = NLMSG_DATA(nlhdr);
+ pid = NETLINK_CREDS(skb)->pid;
+ if (find_fsevent_listener(pid) == NULL)
+ atomic_inc(&fsevent_listener_num);
+ set_fsevent_filter(filter, pid);
+ }
+ kfree_skb(skb);
+ }
+}
+
+#define DEFINE_FILTER_MATCH_FUNC(filtertype, key) \
+ static int match_##filtertype(listener * p, \
+ struct fsevent * event, \
+ struct sk_buff * skb) \
+ { \
+ int ret = 0; \
+ filtertype * xfilter = NULL; \
+ struct sk_buff * skb2 = NULL; \
+ struct list_head * head = &(p->key##_filter_list_head); \
+ list_for_each_entry(xfilter, head, list) { \
+ if (xfilter->key != event->key) \
+ continue; \
+ ret = filter_fsevent(xfilter->mask, event->type); \
+ if ( ret != 0) \
+ return -1; \
+ skb2 = skb_clone(skb, GFP_KERNEL); \
+ if (skb2 == NULL) \
+ return -ENOMEM; \
+ NETLINK_CB(skb2).dst_group = 0; \
+ NETLINK_CB(skb2).dst_pid = p->pid; \
+ NETLINK_CB(skb2).pid = 0; \
+ return (netlink_unicast(fsevent_sock, skb2, \
+ p->pid, MSG_DONTWAIT)); \
+ } \
+ return -ENODEV; \
+ } \
+
+DEFINE_FILTER_MATCH_FUNC(pid_filter, pid)
+
+DEFINE_FILTER_MATCH_FUNC(uid_filter, uid)
+
+DEFINE_FILTER_MATCH_FUNC(gid_filter, gid)
+
+#define MATCH_XID(key, listenerp, event, skb) \
+ ret = match_##key##_filter(listenerp, event, skb); \
+ if (ret == 0) { \
+ kfree_skb(skb); \
+ continue; \
+ } \
+ do {} while (0) \
+
+static int fsevent_send_to_process(struct sk_buff * skb)
+{
+ listener * p = NULL, * q = NULL;
+ struct fsevent * event = NULL;
+ struct sk_buff * skb2 = NULL;
+ int ret = 0;
+
+ event = (struct fsevent *)(skb->data + sizeof(struct nlmsghdr));
+ spin_lock(&listener_list_lock);
+ list_for_each_entry_safe(p, q, &listener_list_head, list) {
+ MATCH_XID(pid, p, event, skb);
+ MATCH_XID(uid, p, event, skb);
+ MATCH_XID(gid, p, event, skb);
+
+ if (filter_fsevent(p->mask, event->type) == 0) {
+ skb2 = skb_clone(skb, GFP_KERNEL);
+ if (skb2 == NULL)
+ return -ENOMEM;
+ NETLINK_CB(skb2).dst_group = 0;
+ NETLINK_CB(skb2).dst_pid = p->pid;
+ NETLINK_CB(skb2).pid = 0;
+ ret = netlink_unicast(fsevent_sock, skb2,
+ p->pid, MSG_DONTWAIT);
+ if (ret == -ECONNREFUSED) {
+ atomic_dec(&fsevent_listener_num);
+ cleanup_dead_listener(p);
+ }
+ }
+ }
+ spin_unlock(&listener_list_lock);
+ return ret;
+}
+
+static void fsevent_commit(void * unused)
+{
+ struct sk_buff * skb = NULL;
+
+ while((skb = skb_dequeue(&get_cpu_var(fsevent_send_queue)))
+ != NULL) {
+ fsevent_send_to_process(skb);
+ put_cpu_var(fsevent_send_queue);
+ }
+}
+
+static struct ctl_table fsevent_mask_sysctl[] = {
+ {
+ .ctl_name = FSEVENT_MASK_CTL_NAME,
+ .procname = "fsevent_mask",
+ .data = &fsevents_mask,
+ .maxlen = sizeof(u32),
+ .mode = 0644,
+ .proc_handler = &proc_dointvec,
+ },
+ { .ctl_name = 0 }
+};
+
+static struct ctl_table fs_root_sysctl[] = {
+ {
+ .ctl_name = CTL_FS,
+ .procname = "fs",
+ .mode = 0555,
+ .child = fsevent_mask_sysctl,
+ },
+ { .ctl_name = 0 }
+};
+
+static int __init fsevent_init(void)
+{
+ int cpu;
+ struct sk_buff_head * listptr;
+ struct work_struct * workptr;
+
+ fsevent_sock = netlink_kernel_create(NETLINK_FSEVENT, 0,
+ fsevent_recv, THIS_MODULE);
+ if (!fsevent_sock)
+ return -EIO;
+ for_each_cpu(cpu) {
+ listptr = &per_cpu(fsevent_send_queue, cpu);
+ skb_queue_head_init(listptr);
+ workptr = &per_cpu(fsevent_work, cpu);
+ INIT_WORK(workptr, fsevent_commit, NULL);
+ }
+
+ if (register_sysctl_table(fs_root_sysctl, 0) == NULL)
+ return -ENOMEM;
+
+ return 0;
+}
+
+static void __exit fsevent_exit(void)
+{
+ listener * p = NULL, * q = NULL;
+ sock_release(fsevent_sock->sk_socket);
+ spin_lock(&listener_list_lock);
+ list_for_each_entry_safe(p, q, &listener_list_head, list) {
+ cleanup_dead_listener(p);
+ }
+ spin_unlock(&listener_list_lock);
+}
+
+module_init(fsevent_init);
+module_exit(fsevent_exit);
+
+MODULE_LICENSE("GPL");
+MODULE_AUTHOR("Yi Yang <yang.y.yi@gmail.com>");
+MODULE_DESCRIPTION("File System Events Reporter");
^ permalink raw reply
* Re: Dynamically linking to pthread library
From: Dustin Lang @ 2006-04-05 13:20 UTC (permalink / raw)
To: Usha Rani Konudula; +Cc: linuxppc-dev
In-Reply-To: <C9CDA704CB0EEA4DBE2EFC05AE11851C1C6A8A@SGSGS-EXCH01.apac.borl.net>
Hi,
> Do you need to explicitly specify -pthread option to g++ to make the
> target library link with pthread dynamically. Otherwise does it
> statically link to pthread library on ppc64 power5.
You can use "ldd" to tell you which libraries are dynamically linked to an
executable. Read "man ldd" for more details. You can add the "-v"
(verbose) flag to your g++ link command, which will tell you the full
details of what it's linking in.
My guess is that you need to specify "-pthread" explicitly. What happens
if you create a program that calls a pthread function and you don't
specify "-pthread". Does it link? If it does, then the compiler is
getting that pthread definition from _somewhere_. What does "g++ -v" tell
you? What does "ldd" tell you?
By the way, a better way to ask questions on a mailing list is to explain
what you're trying to do, what you've tried to do to achieve it, and why
it didn't work. It usually helps to be explicit about each step. Show
that you've tried to figure it out for yourself.
Cheers,
dstn.
^ permalink raw reply
* [PATCH 02/11] libata: kill @verbose from ata_reset_fn_t
From: Tejun Heo @ 2006-04-05 13:17 UTC (permalink / raw)
To: Jeff Garzik, linux-ide
In-Reply-To: <20060405131637.GB31998@htj.dyndns.org>
@verbose was added to ata_reset_fn_t because AHCI complained during
probing if no device was attached to the port. However, muting
failure message isn't the correct approach. Reset methods are
responsible for detecting no device condition and finishing
successfully. Now that AHCI softreset is fixed, kill @verbose.
Signed-off-by: Tejun Heo <htejun@gmail.com>
---
drivers/scsi/ahci.c | 13 +++++--------
drivers/scsi/libata-core.c | 36 ++++++++++++------------------------
drivers/scsi/libata.h | 6 ++----
drivers/scsi/sata_sil24.c | 8 +++-----
include/linux/libata.h | 8 +++-----
5 files changed, 25 insertions(+), 46 deletions(-)
e5e25df37b559ebd982d4be829e4e939cced3fd6
diff --git a/drivers/scsi/ahci.c b/drivers/scsi/ahci.c
index ff48066..8f06375 100644
--- a/drivers/scsi/ahci.c
+++ b/drivers/scsi/ahci.c
@@ -535,7 +535,7 @@ static int ahci_poll_register(void __iom
return -1;
}
-static int ahci_softreset(struct ata_port *ap, int verbose, unsigned int *class)
+static int ahci_softreset(struct ata_port *ap, unsigned int *class)
{
struct ahci_host_priv *hpriv = ap->host_set->private_data;
struct ahci_port_priv *pp = ap->private_data;
@@ -647,22 +647,19 @@ static int ahci_softreset(struct ata_por
fail_restart:
ahci_start_engine(ap);
fail:
- if (verbose)
- printk(KERN_ERR "ata%u: softreset failed (%s)\n",
- ap->id, reason);
- else
- DPRINTK("EXIT, rc=%d reason=\"%s\"\n", rc, reason);
+ printk(KERN_ERR "ata%u: softreset failed (%s)\n",
+ ap->id, reason);
return rc;
}
-static int ahci_hardreset(struct ata_port *ap, int verbose, unsigned int *class)
+static int ahci_hardreset(struct ata_port *ap, unsigned int *class)
{
int rc;
DPRINTK("ENTER\n");
ahci_stop_engine(ap);
- rc = sata_std_hardreset(ap, verbose, class);
+ rc = sata_std_hardreset(ap, class);
ahci_start_engine(ap);
if (rc == 0)
diff --git a/drivers/scsi/libata-core.c b/drivers/scsi/libata-core.c
index 8d3fed4..9e49251 100644
--- a/drivers/scsi/libata-core.c
+++ b/drivers/scsi/libata-core.c
@@ -2387,7 +2387,6 @@ void ata_std_probeinit(struct ata_port *
/**
* ata_std_softreset - reset host port via ATA SRST
* @ap: port to reset
- * @verbose: fail verbosely
* @classes: resulting classes of attached devices
*
* Reset host port using ATA SRST. This function is to be used
@@ -2399,7 +2398,7 @@ void ata_std_probeinit(struct ata_port *
* RETURNS:
* 0 on success, -errno otherwise.
*/
-int ata_std_softreset(struct ata_port *ap, int verbose, unsigned int *classes)
+int ata_std_softreset(struct ata_port *ap, unsigned int *classes)
{
unsigned int slave_possible = ap->flags & ATA_FLAG_SLAVE_POSS;
unsigned int devmask = 0, err_mask;
@@ -2425,12 +2424,8 @@ int ata_std_softreset(struct ata_port *a
DPRINTK("about to softreset, devmask=%x\n", devmask);
err_mask = ata_bus_softreset(ap, devmask);
if (err_mask) {
- if (verbose)
- printk(KERN_ERR "ata%u: SRST failed (err_mask=0x%x)\n",
- ap->id, err_mask);
- else
- DPRINTK("EXIT, softreset failed (err_mask=0x%x)\n",
- err_mask);
+ printk(KERN_ERR "ata%u: SRST failed (err_mask=0x%x)\n",
+ ap->id, err_mask);
return -EIO;
}
@@ -2447,7 +2442,6 @@ int ata_std_softreset(struct ata_port *a
/**
* sata_std_hardreset - reset host port via SATA phy reset
* @ap: port to reset
- * @verbose: fail verbosely
* @class: resulting class of attached device
*
* SATA phy-reset host port using DET bits of SControl register.
@@ -2460,7 +2454,7 @@ int ata_std_softreset(struct ata_port *a
* RETURNS:
* 0 on success, -errno otherwise.
*/
-int sata_std_hardreset(struct ata_port *ap, int verbose, unsigned int *class)
+int sata_std_hardreset(struct ata_port *ap, unsigned int *class)
{
u32 scontrol;
@@ -2500,11 +2494,8 @@ int sata_std_hardreset(struct ata_port *
}
if (ata_busy_sleep(ap, ATA_TMOUT_BOOT_QUICK, ATA_TMOUT_BOOT)) {
- if (verbose)
- printk(KERN_ERR "ata%u: COMRESET failed "
- "(device not ready)\n", ap->id);
- else
- DPRINTK("EXIT, device not ready\n");
+ printk(KERN_ERR "ata%u: COMRESET failed "
+ "(device not ready)\n", ap->id);
return -EIO;
}
@@ -2592,16 +2583,15 @@ int ata_std_probe_reset(struct ata_port
ata_std_postreset, classes);
}
-int ata_do_reset(struct ata_port *ap,
- ata_reset_fn_t reset, ata_postreset_fn_t postreset,
- int verbose, unsigned int *classes)
+int ata_do_reset(struct ata_port *ap, ata_reset_fn_t reset,
+ ata_postreset_fn_t postreset, unsigned int *classes)
{
int i, rc;
for (i = 0; i < ATA_MAX_DEVICES; i++)
classes[i] = ATA_DEV_UNKNOWN;
- rc = reset(ap, verbose, classes);
+ rc = reset(ap, classes);
if (rc)
return rc;
@@ -2645,8 +2635,6 @@ int ata_do_reset(struct ata_port *ap,
* - If classification is supported, fill classes[] with
* recognized class codes.
* - If classification is not supported, leave classes[] alone.
- * - If verbose is non-zero, print error message on failure;
- * otherwise, shut up.
*
* LOCKING:
* Kernel thread context (may sleep)
@@ -2666,7 +2654,7 @@ int ata_drive_probe_reset(struct ata_por
probeinit(ap);
if (softreset && !ata_set_sata_spd_needed(ap)) {
- rc = ata_do_reset(ap, softreset, postreset, 0, classes);
+ rc = ata_do_reset(ap, softreset, postreset, classes);
if (rc == 0 && classes[0] != ATA_DEV_UNKNOWN)
goto done;
printk(KERN_INFO "ata%u: softreset failed, will try "
@@ -2678,7 +2666,7 @@ int ata_drive_probe_reset(struct ata_por
goto done;
while (1) {
- rc = ata_do_reset(ap, hardreset, postreset, 0, classes);
+ rc = ata_do_reset(ap, hardreset, postreset, classes);
if (rc == 0) {
if (classes[0] != ATA_DEV_UNKNOWN)
goto done;
@@ -2699,7 +2687,7 @@ int ata_drive_probe_reset(struct ata_por
ap->id);
ssleep(5);
- rc = ata_do_reset(ap, softreset, postreset, 0, classes);
+ rc = ata_do_reset(ap, softreset, postreset, classes);
}
done:
diff --git a/drivers/scsi/libata.h b/drivers/scsi/libata.h
index 652c08e..4299aa1 100644
--- a/drivers/scsi/libata.h
+++ b/drivers/scsi/libata.h
@@ -56,10 +56,8 @@ extern int ata_set_sata_spd_needed(struc
extern int ata_down_xfermask_limit(struct ata_port *ap, struct ata_device *dev,
int force_pio0);
extern int ata_set_mode(struct ata_port *ap, struct ata_device **r_failed_dev);
-extern int ata_do_reset(struct ata_port *ap,
- ata_reset_fn_t reset,
- ata_postreset_fn_t postreset,
- int verbose, unsigned int *classes);
+extern int ata_do_reset(struct ata_port *ap, ata_reset_fn_t reset,
+ ata_postreset_fn_t postreset, unsigned int *classes);
extern void ata_qc_free(struct ata_queued_cmd *qc);
extern void ata_qc_issue(struct ata_queued_cmd *qc);
extern int ata_check_atapi_dma(struct ata_queued_cmd *qc);
diff --git a/drivers/scsi/sata_sil24.c b/drivers/scsi/sata_sil24.c
index 646756a..7f3fbac 100644
--- a/drivers/scsi/sata_sil24.c
+++ b/drivers/scsi/sata_sil24.c
@@ -427,8 +427,7 @@ static void sil24_tf_read(struct ata_por
*tf = pp->tf;
}
-static int sil24_softreset(struct ata_port *ap, int verbose,
- unsigned int *class)
+static int sil24_softreset(struct ata_port *ap, unsigned int *class)
{
void __iomem *port = (void __iomem *)ap->ioaddr.cmd_addr;
struct sil24_port_priv *pp = ap->private_data;
@@ -490,13 +489,12 @@ static int sil24_softreset(struct ata_po
return 0;
}
-static int sil24_hardreset(struct ata_port *ap, int verbose,
- unsigned int *class)
+static int sil24_hardreset(struct ata_port *ap, unsigned int *class)
{
unsigned int dummy_class;
/* sil24 doesn't report device signature after hard reset */
- return sata_std_hardreset(ap, verbose, &dummy_class);
+ return sata_std_hardreset(ap, &dummy_class);
}
static int sil24_probe_reset(struct ata_port *ap, unsigned int *classes)
diff --git a/include/linux/libata.h b/include/linux/libata.h
index 03231cb..6954852 100644
--- a/include/linux/libata.h
+++ b/include/linux/libata.h
@@ -251,7 +251,7 @@ struct ata_queued_cmd;
/* typedefs */
typedef void (*ata_qc_cb_t) (struct ata_queued_cmd *qc);
typedef void (*ata_probeinit_fn_t)(struct ata_port *);
-typedef int (*ata_reset_fn_t)(struct ata_port *, int, unsigned int *);
+typedef int (*ata_reset_fn_t)(struct ata_port *, unsigned int *);
typedef void (*ata_postreset_fn_t)(struct ata_port *ap, unsigned int *);
struct ata_ioports {
@@ -508,10 +508,8 @@ extern int ata_drive_probe_reset(struct
ata_reset_fn_t softreset, ata_reset_fn_t hardreset,
ata_postreset_fn_t postreset, unsigned int *classes);
extern void ata_std_probeinit(struct ata_port *ap);
-extern int ata_std_softreset(struct ata_port *ap, int verbose,
- unsigned int *classes);
-extern int sata_std_hardreset(struct ata_port *ap, int verbose,
- unsigned int *class);
+extern int ata_std_softreset(struct ata_port *ap, unsigned int *classes);
+extern int sata_std_hardreset(struct ata_port *ap, unsigned int *class);
extern void ata_std_postreset(struct ata_port *ap, unsigned int *classes);
extern int ata_dev_revalidate(struct ata_port *ap, struct ata_device *dev,
int post_reset);
--
1.2.4
^ permalink raw reply related
* Re: [PATCH] Fix sed regexp to generate asm-offset.h
From: Sam Ravnborg @ 2006-04-05 11:00 UTC (permalink / raw)
To: Atsushi Nemoto; +Cc: linux-mips, linux-kernel, ralf, akpm
In-Reply-To: <20060328.001854.93020330.anemo@mba.ocn.ne.jp>
On Tue, Mar 28, 2006 at 12:18:54AM +0900, Atsushi Nemoto wrote:
> Changes to Makefile.kbuild ("kbuild: add -fverbose-asm to i386
> Makefile") breaks asm-offset.h file on MIPS. Other archs possibly
> suffer this change too but I'm not sure.
>
> Here is a fix just for MIPS.
Thanks, applied to the kbuild bugfix tree.
Sam
^ permalink raw reply
* Re: [RFC] 2 features for mptools 0.4.8
From: Philip R. Auld @ 2006-04-05 13:19 UTC (permalink / raw)
To: device-mapper development
In-Reply-To: <4432F1B5.3080905@free.fr>
Hi,
Rumor has it that on Wed, Apr 05, 2006 at 12:22:45AM +0200 Christophe Varoqui said:
> Hello,
>
...
>
> On a related note, is there still interest in a physical path-based
> checking, rather than the current logical path-based one ?
>
> The recent fc_host sysfs class normalisation brings a simple way to
> identify physical local endpoint with FC transport :
>
Is this FC transport specific or would it work for, say, iSCSI devices?
> local endpoint : /sys/class/fc_host/host1/port_name
> remote endpoint : /sys/class/fc_transport/target1:0:2/port_name
> logical paths on this phy :
>
> [root@s64p17bic44 ~]# file
> /sys/class/fc_transport/target1\:0\:2/device/1\:0\:2\:*/block
> /sys/class/fc_transport/target1:0:2/device/1:0:2:0/block: symbolic
> link to `../../../../../../../../block/sdaa'
> /sys/class/fc_transport/target1:0:2/device/1:0:2:512/block: symbolic
> link to `../../../../../../../../block/sdab'
> /sys/class/fc_transport/target1:0:2/device/1:0:2:513/block: symbolic
> link to `../../../../../../../../block/sdac'
> /sys/class/fc_transport/target1:0:2/device/1:0:2:514/block: symbolic
> link to `../../../../../../../../block/sdad'
> /sys/class/fc_transport/target1:0:2/device/1:0:2:515/block: symbolic
> link to `../../../../../../../../block/sdae'
> /sys/class/fc_transport/target1:0:2/device/1:0:2:516/block: symbolic
> link to `../../../../../../../../block/sdaf'
> /sys/class/fc_transport/target1:0:2/device/1:0:2:517/block: symbolic
> link to `../../../../../../../../block/sdag'
> /sys/class/fc_transport/target1:0:2/device/1:0:2:518/block: symbolic
> link to `../../../../../../../../block/sdah'
>
> Implementing this idea would mean in this example that checker status
> for sdaa applies to sda[bcdefgh].
Seems to me you may need a hybrid of both approaches. I agree that if
the target (sdaa) fails it's pretty safe to assume the LUs behind it
are gone. But just because sdaa is back does not mean the LUs are
definitely reachable again. Until sdaa comes back though there is not
much point in checking for the LUs.
It may also be useful to have it be a configuration option.
This and the fix for FASTFAIL will make the tools dependent on
specific kernel revs. How well do they handle running on slightly
older kernels?
Cheers,
Phil
>
> Arguments in favor of this approach are :
>
> 1) less checking work
> 2) lower failure-to-reaction latency : batched reactions upon phy path
> failure.
> 3) lessen the checking time drift : setup interval is I, but the real
> interval is "I+(checker loop time)"
> 4) each path check involves I/O, thus quite a high latency. Less checks
> means higher efficiency.
>
> I'm open for comments.
>
> Regards,
> cvaroqui
>
> --
> dm-devel mailing list
> dm-devel@redhat.com
> https://www.redhat.com/mailman/listinfo/dm-devel
--
Philip R. Auld, Ph.D. Egenera, Inc.
Software Architect 165 Forest St.
(508) 858-2628 Marlboro, MA 01752
^ permalink raw reply
* Re: How should I handle binary file with GIT
From: moreau francis @ 2006-04-05 13:18 UTC (permalink / raw)
To: Junio C Hamano; +Cc: git
In-Reply-To: <7v3bgs4exz.fsf@assigned-by-dhcp.cox.net>
--- Junio C Hamano <junkio@cox.net> a écrit :
> If I were doing that today, I would be doing almost exactly the
> above sequence, or:
>
> $ git am patch
> $ git add <new images>
> $ git commit -a --amend
>
BTW, what does "--amend" option do ? It doesn't seem to be documented anywhere.
Francis
___________________________________________________________________________
Nouveau : téléphonez moins cher avec Yahoo! Messenger ! Découvez les tarifs exceptionnels pour appeler la France et l'international.
Téléchargez sur http://fr.messenger.yahoo.com
^ permalink raw reply
* Re: [PATCH 03/11] libata: make reset methods complain when they fail
From: Tejun Heo @ 2006-04-05 13:18 UTC (permalink / raw)
To: Jeff Garzik, linux-ide
In-Reply-To: <20060405131732.GD31998@htj.dyndns.org>
Please ignore /11. Three are all. Forgot to edit subject on the
second and third mails. Sorry.
--
tejun
^ permalink raw reply
* [LARTC] Tocken Bucket with priority?
From: Emanuele Colombo @ 2006-04-05 13:18 UTC (permalink / raw)
To: lartc
[-- Attachment #1.1: Type: text/plain, Size: 1330 bytes --]
Hi. I'm trying to get a traffic shaper like this:
------
VoIP pkts --> | |_|
------ \ |
---O ->
------ /
Data pkts --> |
------
In this shaper voip packets are in a different queue than any other kind of
packet. I want a data packet to be served only when no packets are in the
voip queue (when voip queue is empty).
Furthermore the total traffic that leaves this shaper needs to be limited to
a specific (and precise) value of bandwidth, like a token bucket.
I can't use something like this (PRIO + TBF) because in this way when "data
congestion" happens, voip packets may be lost too(packet drop appens on the
TBF queue):
------
VoIP pkts --> | |_|
------ \ ----- |
O ---> |---O ->
------ / -----
Data pkts --> |
------
I also can't use HTB because it doesn't provide a priority mechanism like my
needs, and CBQ because his bandwidth limiting algorithm isn't very precise
(according to the documentation).
How can I solve this problem using tc qdiscs?
Thanks
--
Emanuele
[-- Attachment #1.2: Type: text/html, Size: 5762 bytes --]
[-- Attachment #2: Type: text/plain, Size: 143 bytes --]
_______________________________________________
LARTC mailing list
LARTC@mailman.ds9a.nl
http://mailman.ds9a.nl/cgi-bin/mailman/listinfo/lartc
^ permalink raw reply
* [PATCH 03/11] libata: make reset methods complain when they fail
From: Tejun Heo @ 2006-04-05 13:17 UTC (permalink / raw)
To: Jeff Garzik, linux-ide
In-Reply-To: <20060405131713.GC31998@htj.dyndns.org>
Make reset methods complain loud when they fail.
Signed-off-by: Tejun Heo <htejun@gmail.com>
---
drivers/scsi/libata-core.c | 8 +++++---
drivers/scsi/sata_sil24.c | 2 +-
2 files changed, 6 insertions(+), 4 deletions(-)
9a205828931c54fcf51c21119254b96d4c8440ca
diff --git a/drivers/scsi/libata-core.c b/drivers/scsi/libata-core.c
index 9e49251..ed089a0 100644
--- a/drivers/scsi/libata-core.c
+++ b/drivers/scsi/libata-core.c
@@ -2232,8 +2232,10 @@ static unsigned int ata_bus_softreset(st
* the bus shows 0xFF because the odd clown forgets the D7
* pulldown resistor.
*/
- if (ata_check_status(ap) == 0xFF)
+ if (ata_check_status(ap) == 0xFF) {
+ printk(KERN_ERR "ata%u: SRST failed (status 0xFF)\n", ap->id);
return AC_ERR_OTHER;
+ }
ata_bus_post_reset(ap, devmask);
@@ -2494,8 +2496,8 @@ int sata_std_hardreset(struct ata_port *
}
if (ata_busy_sleep(ap, ATA_TMOUT_BOOT_QUICK, ATA_TMOUT_BOOT)) {
- printk(KERN_ERR "ata%u: COMRESET failed "
- "(device not ready)\n", ap->id);
+ printk(KERN_ERR
+ "ata%u: COMRESET failed (device not ready)\n", ap->id);
return -EIO;
}
diff --git a/drivers/scsi/sata_sil24.c b/drivers/scsi/sata_sil24.c
index 7f3fbac..60dd6f1 100644
--- a/drivers/scsi/sata_sil24.c
+++ b/drivers/scsi/sata_sil24.c
@@ -474,7 +474,7 @@ static int sil24_softreset(struct ata_po
writel(irq_enable, port + PORT_IRQ_ENABLE_SET);
if (!(irq_stat & PORT_IRQ_COMPLETE)) {
- DPRINTK("EXIT, srst failed\n");
+ printk(KERN_ERR "ata%u: softreset failed (timeout)\n", ap->id);
return -EIO;
}
--
1.2.4
^ permalink raw reply related
* Re: Q on audit, audit-syscall
From: Kyle Moffett @ 2006-04-05 13:17 UTC (permalink / raw)
To: Herbert Rosmanith; +Cc: Robin Holt, linux-kernel
In-Reply-To: <200604051206.k35C6Uiq009761@wildsau.enemy.org>
On Apr 5, 2006, at 08:06:30, Herbert Rosmanith wrote:
>> On Wed, Apr 05, 2006 at 01:27:03PM +0200, Herbert Rosmanith wrote:
>>>
>>> good afternoon,
>>>
>>> I'm searching for a way to trace/intercept syscalls, both before
>>> and after execution. "ptrace" is not an option (you probably know
>>> why).
>>
>> Does strace do what you are asking for?
>
> as I said, "ptrace" is not an option.
Why not, exactly? (No, we don't know why). ptrace is _the_ Linux
mechanism to trace and intercept syscalls. There is no other way.
Cheers,
Kyle Moffett
^ permalink raw reply
* Re: [Patch] Pointer dereference in net/irda/ircomm/ircomm_tty.c
From: Adrian Bunk @ 2006-04-05 13:17 UTC (permalink / raw)
To: Alexey Dobriyan; +Cc: Eric Sesterhenn, linux-kernel
In-Reply-To: <20060322232247.GD7790@mipter.zuzino.mipt.ru>
On Thu, Mar 23, 2006 at 02:22:47AM +0300, Alexey Dobriyan wrote:
> On Wed, Mar 22, 2006 at 11:46:05PM +0100, Eric Sesterhenn wrote:
> > this fixes coverity bugs #855 and #854. In both cases tty
> > is dereferenced before getting checked for NULL.
>
> Before Al will flame you,
>
> IMO, what should be done is removing asserts checking for "self",
> because ->driver_data is filled in ircomm_tty_open() with valid pointer.
That's not what the Coverity checker is warning about.
It warns that "tty" is first dereferenced and later checked for NULL.
> > --- linux-2.6.16/net/irda/ircomm/ircomm_tty.c.orig
> > +++ linux-2.6.16/net/irda/ircomm/ircomm_tty.c
> > @@ -493,7 +493,7 @@ static int ircomm_tty_open(struct tty_st
> > */
> > static void ircomm_tty_close(struct tty_struct *tty, struct file *filp)
> > {
> > - struct ircomm_tty_cb *self = (struct ircomm_tty_cb *) tty->driver_data;
> > + struct ircomm_tty_cb *self;
> > unsigned long flags;
> >
> > IRDA_DEBUG(0, "%s()\n", __FUNCTION__ );
> > @@ -501,6 +501,8 @@ static void ircomm_tty_close(struct tty_
> > if (!tty)
> > return;
> >
> > + self = (struct ircomm_tty_cb *) tty->driver_data;
> > +
> > IRDA_ASSERT(self != NULL, return;);
> > IRDA_ASSERT(self->magic == IRCOMM_TTY_MAGIC, return;);
> >
> > @@ -1006,17 +1008,19 @@ static void ircomm_tty_shutdown(struct i
> > */
> > static void ircomm_tty_hangup(struct tty_struct *tty)
> > {
> > - struct ircomm_tty_cb *self = (struct ircomm_tty_cb *) tty->driver_data;
> > + struct ircomm_tty_cb *self;
> > unsigned long flags;
> >
> > IRDA_DEBUG(0, "%s()\n", __FUNCTION__ );
> >
> > - IRDA_ASSERT(self != NULL, return;);
> > - IRDA_ASSERT(self->magic == IRCOMM_TTY_MAGIC, return;);
> > -
> > if (!tty)
> > return;
> >
> > + self = (struct ircomm_tty_cb *) tty->driver_data;
> > +
> > + IRDA_ASSERT(self != NULL, return;);
> > + IRDA_ASSERT(self->magic == IRCOMM_TTY_MAGIC, return;);
> > +
> > /* ircomm_tty_flush_buffer(tty); */
> > ircomm_tty_shutdown(self);
cu
Adrian
--
"Is there not promise of rain?" Ling Tan asked suddenly out
of the darkness. There had been need of rain for many days.
"Only a promise," Lao Er said.
Pearl S. Buck - Dragon Seed
^ permalink raw reply
* Re: How should I handle binary file with GIT
From: Nicolas Pitre @ 2006-04-05 13:06 UTC (permalink / raw)
To: Junio C Hamano; +Cc: moreau francis, git
In-Reply-To: <7v3bgs4exz.fsf@assigned-by-dhcp.cox.net>
On Wed, 5 Apr 2006, Junio C Hamano wrote:
> It _might_ make sense to adopt a well-defined binary patch
> format (or if there is no prior art, introduce our own) and
> support that format with both git-diff-* brothers and git-apply,
> but that would be a bit longer term project.
What about simply using diff-delta and encoding its output with base64?
Nicolas
^ permalink raw reply
* Re: [Xenomai-core] Frozen timer IRQ
From: Philippe Gerum @ 2006-04-05 13:05 UTC (permalink / raw)
To: Philippe Gerum; +Cc: Jan Kiszka, xenomai-core
In-Reply-To: <4433BA43.7000807@domain.hid>
Philippe Gerum wrote:
> Gilles Chanteperdrix wrote:
>
>> Jan Kiszka wrote:
>> > Hi,
>> > > my colleagues and I need some hint where to continue our search
>> for the
>> > cause of a weird cleanup issue:
>> > > An application of our robotics framework sometimes terminates
>> (though
>> > successfully) in a way that the system timer IRQ no longer arrives
>> > afterwards or no re-program takes place anymore. All other Linux IRQs
>> > are fine (Ethernet, keyboard, etc.). I cannot provide an easy test
>> case
>> > yet as besides the framework some expensive gyroscope and the 16550A
>> > driver are involved.
>>
>> I observed a similar issue when xnpod_stop_timer was called when
>> shutting down the posix skin. I assumed that the problem was that
>> xnpod_shutdown already called xnpod_stop_timer, so xnpod_stop_timer (and
>> in particular xnarch_stop_timer) ended up being called twice.
>>
>
> Err, sorry. Forget about my previous reply: xnarch_stop_timer is _not_
> protected by the XNTIMED flag, but only the last part of the
> housekeeping chores performed upon stopping the systimer are. IOW, this
> is a latent bug, and xnpod_stop_timer should be fixed.
>
Commit 884 should do that.
--
Philippe.
^ permalink raw reply
* mpi application fails with vanilla 2.6 kernels, works with rhel kernels
From: Dimitris Zilaskos @ 2006-04-05 12:00 UTC (permalink / raw)
To: linux-kernel
Hi all,
I am trying to run WRF model (http://wrf-model.org) on a dual core
dual cpu opteron system with intel c/fortran 9 , scientific linux (rhel compatible,
tried 3.0.4 ,3.0.5 , 4.2) and mpich 1.2.7p1. As long as I use the vendor supplied
kernels everything works fine.However , when I use kernels compiled on my own, I am
getting erratic behaviour: the model will either crash, or produce invalid results,
or complete successfully approximately once in 20 attemps. If I run it on one CPU
it completes successfully with all kernels.
I have tried with 2.6.14.3, 2.6.15.6 and 2.6.9. Both show the same
erratic behaviour. Kernels 2.6.9-22 and 2.6.9-34 as supplied by scientific
linux 4.2 and 2.4.21-37.0.1 in 3.0.4 work fine. All kernels are smp enabled.
I am copying the .config of the vendor kernels, compiling mpt fusion scsi
drivers in kernel and not as modules in some cases. The application runs
exclusively on the opteron system.
I have no idea how to deal with this situation. Any help is
appreciated.
Best regards,
--
============================================================================
Dimitris Zilaskos
Department of Physics @ Aristotle University of Thessaloniki , Greece
PGP key : http://tassadar.physics.auth.gr/~dzila/pgp_public_key.asc
http://egnatia.ee.auth.gr/~dzila/pgp_public_key.asc
MD5sum : de2bd8f73d545f0e4caf3096894ad83f pgp_public_key.asc
============================================================================
^ permalink raw reply
* Re: Slab corruptions & Re: 2.6.17-rc1: Oops in sound applications
From: Takashi Iwai @ 2006-04-05 12:56 UTC (permalink / raw)
To: Jan Niehusmann; +Cc: Ken Moffat, linux-kernel, alsa-devel
In-Reply-To: <s5hslosnqm6.wl%tiwai@suse.de>
At Wed, 05 Apr 2006 14:39:29 +0200,
I wrote:
>
> At Wed, 5 Apr 2006 14:15:38 +0200,
> Jan Niehusmann wrote:
> >
> > On Wed, Apr 05, 2006 at 01:14:54PM +0200, Takashi Iwai wrote:
> > > Try the patch below. The change in pcm_native.c may be unnecessary,
> > > but it's better so.
> > > If it works, I'll submit the patches with a proper log.
> >
> > The patch (applied to 2.6.17-rc1) does fix the oops, but sound is still
> > garbled with twinkle using /dev/dsp.
> >
> > About this garbled sound: I call an echo service on my asterisk server,
> > which just echoes back everything I say. Works well using /dev/dsp with
> > 2.6.16, but with 2.6.17-rc1, even with the patch applied, I hear no echo
> > at all for ~1s. After that, I hear a strongly distorted echo.
>
> Did you have any special setting (e.g. oss proc file)?
How about the patch below?
Takashi
diff --git a/sound/core/oss/pcm_oss.c b/sound/core/oss/pcm_oss.c
index 91114c7..c951cf8 100644
--- a/sound/core/oss/pcm_oss.c
+++ b/sound/core/oss/pcm_oss.c
@@ -1682,7 +1682,7 @@ static void snd_pcm_oss_init_substream(s
substream->oss.setup = *setup;
if (setup->nonblock)
substream->ffile->f_flags |= O_NONBLOCK;
- else
+ else if (setup->block)
substream->ffile->f_flags &= ~O_NONBLOCK;
runtime = substream->runtime;
runtime->oss.params = 1;
-------------------------------------------------------
This SF.Net email is sponsored by xPML, a groundbreaking scripting language
that extends applications into web and mobile media. Attend the live webcast
and join the prime developer group breaking into this new coding territory!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642
^ permalink raw reply related
* Re: [Alsa-devel] Slab corruptions & Re: 2.6.17-rc1: Oops in sound applications
From: Takashi Iwai @ 2006-04-05 12:56 UTC (permalink / raw)
To: Jan Niehusmann; +Cc: Ken Moffat, linux-kernel, alsa-devel
In-Reply-To: <s5hslosnqm6.wl%tiwai@suse.de>
At Wed, 05 Apr 2006 14:39:29 +0200,
I wrote:
>
> At Wed, 5 Apr 2006 14:15:38 +0200,
> Jan Niehusmann wrote:
> >
> > On Wed, Apr 05, 2006 at 01:14:54PM +0200, Takashi Iwai wrote:
> > > Try the patch below. The change in pcm_native.c may be unnecessary,
> > > but it's better so.
> > > If it works, I'll submit the patches with a proper log.
> >
> > The patch (applied to 2.6.17-rc1) does fix the oops, but sound is still
> > garbled with twinkle using /dev/dsp.
> >
> > About this garbled sound: I call an echo service on my asterisk server,
> > which just echoes back everything I say. Works well using /dev/dsp with
> > 2.6.16, but with 2.6.17-rc1, even with the patch applied, I hear no echo
> > at all for ~1s. After that, I hear a strongly distorted echo.
>
> Did you have any special setting (e.g. oss proc file)?
How about the patch below?
Takashi
diff --git a/sound/core/oss/pcm_oss.c b/sound/core/oss/pcm_oss.c
index 91114c7..c951cf8 100644
--- a/sound/core/oss/pcm_oss.c
+++ b/sound/core/oss/pcm_oss.c
@@ -1682,7 +1682,7 @@ static void snd_pcm_oss_init_substream(s
substream->oss.setup = *setup;
if (setup->nonblock)
substream->ffile->f_flags |= O_NONBLOCK;
- else
+ else if (setup->block)
substream->ffile->f_flags &= ~O_NONBLOCK;
runtime = substream->runtime;
runtime->oss.params = 1;
^ permalink raw reply related
* [libnetfilter_queue]
From: David Vogt @ 2006-04-05 12:56 UTC (permalink / raw)
To: netfilter@lists.netfilter.org
Dear all,
I would like to send different packets to different userland
applications using libnetfilter_queue. As far as I understand,
different queues can be distingusihed using some kind of queue number.
How does the appropriate iptables command look like that sends packets
to a specific queue?
David
^ permalink raw reply
* Re: VMX status report 9532:5baf152d63ef
From: Keir Fraser @ 2006-04-05 12:53 UTC (permalink / raw)
To: Shi, Alex; +Cc: xen-devel
In-Reply-To: <97482BF90993634BAE7D886C5B89B5ED887685@pdsmsx403>
On 5 Apr 2006, at 13:42, Shi, Alex wrote:
> We have tested the latest xen on VT platform with Intel 915/E8500
> chipset.Here is the test summary.
Yes, we've reproduced that same bug in Cambridge. It's due to changeset
9530. We're currently testing a fix for xen-unstable. The offending
changeset is not in our 3.0.2 release candidate.
-- Keir
^ permalink raw reply
* Re: rebuild-tree aborted
From: Vladimir V. Saveliev @ 2006-04-05 12:45 UTC (permalink / raw)
To: Scott Dugas; +Cc: reiserfs-list
In-Reply-To: <44337667.5060500@rpi.edu>
Hello
On Wed, 2006-04-05 at 03:48 -0400, Scott Dugas wrote:
> I tried that, but attaching it to another computer failed at the same
> spot, and the only extra drive I have is approximately one GB smaller,
> so when I copy, ddrescue can't copy everything, and when I do run
Find a spare partition of 1 gb size and setup linear raid device.
http://www.tldp.org/HOWTO/Software-RAID-HOWTO-5.html#ss5.4
> rebuild-tree it claims the superblock refers to a larger drive than the
> partition and to --rebuild-sb, so then I ran rebuild-sb, which froze,
> and stopped accessing the drive. Is there any way to check it regardless
> of this size issue.
>
> If not, is there any way to reformat and check the drive to make sure it
> doesn't have any problems. Everything on the drive is replaceable, but
> that would involve ripping 60+ CDs and downloading 40+ concerts, so if I
> could keep the data, that would be nice.
>
> --Scott
>
> Vladimir V. Saveliev wrote:
>
> >Hello
> >
> >On Sat, 2006-03-25 at 15:57 -0500, Scott Dugas wrote:
> >
> >
> >>I have tried reiserfsck --rebuild-tree 11 times. Each time the pass 0
> >>finishes successfully, but has been improving (more or less) each time.
> >>Pass 1 fails. it fails on one of three different blocks each time
> >>(2785605, 9671269, or 48169048), but with different amounts left to
> >>scan. It returns the error:
> >>
> >>The problem has occurred looks like a hardware problem (perhaps
> >>memory). Send us the bug report only if the second run dies at
> >>the same place with the same block number.
> >>
> >>build_the_tree: Nothing but leaves are expected. Block 9671269 - unknown
> >>
> >>
> >>I'm using reiserfsck 3.6.19 with gentoo kernel sources 2.6.14-r5. This
> >>is on an external drive (/dev/sda1).
> >>
> >>is there any way to fix this?
> >>
> >>
> >>
> >I would propose you to try
> >1. to attach the drive to anotrher box and do --rebuild-tree
> >2. to copy (dd_rescue) /dev/sda1 to another hard drive and do
> >--rebuild-tree on the copy
> >
> >
> >
> >>--Scott
> >>
> >>
> >>
> >
> >
> >
> >
>
>
^ permalink raw reply
* ASoC talk at CELF conference
From: Liam Girdwood @ 2006-04-05 12:42 UTC (permalink / raw)
To: alsa-devel
I'd like to announce that I'm presenting a talk on ASoC at the CELF
conference in San Jose on the 11th - 12th April.
The conference website is here:-
http://www.celinux.org/elc2006/index.html
My talk is titled "Enhancing ALSA for portable devices" and discusses
new features in ASoC that will make ALSA better for portable and
cellular devices.
Topics include:
o Dynamic Audio Power Management (DAPM)
o Digital Audio Interface (DAI) matching and optimising for low power.
o Pop and click reduction
o Dealing with external audio events (i.e. jack insertion)
o Usage Scenario setting.
There is source code at http://www.rpsys.net/openzaurus/patches/alsa/
for the first three topics. The last two topics are still in the
planning stage and I'll be posting an RFC to the list shortly after my
return.
I'm hoping to submit ASoC to alsa-kernel at the end of April / start of
May. It's relatively stable now and is in need of some further
documentation before submission.
Liam
-------------------------------------------------------
This SF.Net email is sponsored by xPML, a groundbreaking scripting language
that extends applications into web and mobile media. Attend the live webcast
and join the prime developer group breaking into this new coding territory!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642
^ permalink raw reply
* VMX status report 9532:5baf152d63ef
From: Shi, Alex @ 2006-04-05 12:42 UTC (permalink / raw)
To: xen-devel
[-- Attachment #1: Type: text/plain, Size: 13755 bytes --]
We have tested the latest xen on VT platform with Intel 915/E8500
chipset.Here is the test summary.
Issues:
- Windows guest cannot be booted. Serial line output is as
follows.
IA-32:
Build&Boot SMP xen0 without problem
Can bootup unmodified IA-32 2.4/2.6 linux in VMX domain
Can bootup VMX & XenU with different memory
size(VMX:128MB,256MB,512MB.XenU:256MB)
A selected subset of LTP runs well in VMX domain(2.6)
A selected subset of xm-test runs well
IA-32_PAE:
Build&Boot SMP xen0 without problem
Can bootup unmodified IA-32 2.6 linux in VMX domain
Can bootup VMX & XenU with different memory
size(VMX:256MB,512MB,1500MB.XenU:256MB)
A selected subset of LTP runs well in VMX domain(2.6)
A selected subset of xm-test runs well
IA-32e:
Build&Boot SMP xen0 without problem
Can bootup unmodified IA-32(2.4,2.6)/IA-32e(2.6) linux in VMX domain
Can bootup IA-32PAE 2.6 linux in VMX domain
Can bootup VMX & xenU with different memory
size.(VMX:128MB,256MB,512MB,4096MB.XenU:256MB)
A selected subset of LTP runs well in VMX domain(2.6)
A selected subset of xm-test runs well
For details
------------------------------------------------------------
Platform: IA-32
Service OS: FC3, IA-32, SMP
Hardware: Grandstale
Default guest OS: IA-32, 2.6 kernel
1, one vmx with memory 128M PASS
2, one vmx with memory 256M PASS
3, one vmx with memory 512M PASS
4, one xenU create PASS
5, 2 vmx and 2 xenU coexist PASS
6, four vmx coexist PASS
7, network in VMX domain PASS
8, network in XenU domain PASS
9, one window domain FAIL
10,1 xp1 and 1 xp2 windows domains coexist PASS
11,XenU migration PASS
12,subset LTP test in VMX domain PASS
13,one vmx boot with base kernel(2.6.16) PASS
xm-test on IA-32
========================================================================
=
Xm-test execution summary:
PASS: 47
FAIL: 2
XPASS: 2
XFAIL: 1
Details:
XFAIL: 02_network_local_ping_pos
ping loopback failed for size 65507. ping eth0 failed for size
65507.
FAIL: 01_enforce_dom0_cpus_basic_pos
/proc/cpuinfo says xend didn't enforce dom0_cpus (2 != 1)
========================================================================
======
LTP test result on IA-32
Summary Test Report of Last Session
========================================================================
======
Total Pass Fail NoResult Crash
========================================================================
======
ltp 194 194 0 0 0
========================================================================
======
ltp 194 194 0 0 0
mm 21 21 0 0 0
dio 28 28 0 0 0
nptl 1 1 0 0 0
math 10 10 0 0 0
ipc 8 8 0 0 0
pty 3 3 0 0 0
quickhit 120 120 0 0 0
sched 3 3 0 0 0
========================================================================
======
Total 194 194 0 0 0
Platform: IA-32_PAE
Service OS: RHEL4U1, IA-32_PAE, SMP
Hardware: Grandstal
Default guest OS: IA-32, 2.6 kernel, no pae support
1, one vmx with memory 256M PASS
2, one vmx with memory 512M PASS
3, one vmx with memory 1.5GB PASS
4, one xenU with memory 256M PASS
5, network in VMX domain PASS
6, network in XenU domain PASS
7, one xp1 window domain FAIL
8, xm-test PASS
9, XenU migration PASS
10,LTP in VMX PASS
11,one vmx boot with base kernel(2.6.16) PASS
xm-test on IA-32PAE
========================================================================
=====
Xm-test execution summary:
PASS: 47
FAIL: 2
XPASS: 2
XFAIL: 1
Details:
XFAIL: 02_network_local_ping_pos
ping loopback failed for size 65507. ping eth0 failed for size
65507.
FAIL: 01_enforce_dom0_cpus_basic_pos
/proc/cpuinfo says xend didn't enforce dom0_cpus (2 != 1)
========================================================================
======
LTP test result on IA-32PAE
Summary Test Report of Last Session
========================================================================
======
= Total Pass Fail NoResult Crash
========================================================================
======
=ltp 194 194 0 0 0
========================================================================
======
=ltp 194 194 0 0 0
mm 21 21 0 0 0
dio 28 28 0 0 0
nptl 1 1 0 0 0
math 10 10 0 0 0
ipc 8 8 0 0 0
pty 3 3 0 0 0
quickhit 120 120 0 0 0
sched 3 3 0 0 0
========================================================================
======
=Total 194 194 0 0 0
Platform: IA-32e
Service OS: RHEL4U2, IA-32e, SMP
Hardware: Paxville
Default guest OS: IA-32e, 2.6 kernel
1, one vmx with memory 128M PASS
2, one vmx with memory 256M PASS
3, one vmx with memory 512M PASS
4, one vmx with memory 4096M PASS
5, one xenU with memory 256M PASS
6, 2 vmx and 2 xenU coexist PASS
7, four vmx coexist PASS
8, network in VMX domain PASS
9, network in XenU domain PASS
10, one 2.4 IA32 VMX domain PASS
11, one 2.6 IA32 VMX domain PASS
12, IA-32 2.4 and 2.6 VMX coexist PASS
13, IA-32 and IA-32e VMX coexist PASS
14, LTP in VMX PASS
15, one xp1 window domain FAIL
16, IA-32PAE 2.6 linux domain PASS
17, xm-test PASS
18,one vmx boot with base kernel(2.6.16) PASS
xm-test on IA-32e
================================================================
Xm-test execution summary:
PASS: 47
FAIL: 2
XPASS: 2
XFAIL: 1
Details:
XFAIL: 02_network_local_ping_pos
ping loopback failed for size 65507. ping eth0 failed for size
65507.
FAIL: 01_enforce_dom0_cpus_basic_pos
/proc/cpuinfo says xend didn't enforce dom0_cpus (16 != 1)
=================================================================
LTP test result on IA-32e
Summary Test Report of Last Session
========================================================================
======
= Total Pass Fail NoResult Crash
========================================================================
======
=ltp 195 195 0 0 0
========================================================================
======
=ltp 195 195 0 0 0
mm 21 21 0 0 0
dio 28 28 0 0 0
nptl 1 1 0 0 0
math 10 10 0 0 0
ipc 8 8 0 0 0
pty 3 3 0 0 0
quickhit 121 121 0 0 0
sched 3 3 0 0 0
========================================================================
======
=Total 195 195 0 0 0
Alex shi
>>>>>>>>>>>>>>>>>>>>>>>>>>>>
(XEN) (GUEST: 60) HVM Loader
(XEN) (GUEST: 60) Loading ROMBIOS ...
(XEN) (GUEST: 60) Loading Cirrus VGABIOS ...
(XEN) (GUEST: 60) Loading VMXAssist ...
(XEN) (GUEST: 60) VMX go ...
(XEN) (GUEST: 60) VMXAssist (Apr 5 2006)
(XEN) (GUEST: 60) Memory size 256 MB
(XEN) (GUEST: 60) E820 map:
(XEN) (GUEST: 60) 0000000000000000 - 000000000009F800 (RAM)
(XEN) (GUEST: 60) 000000000009F800 - 00000000000A0000 (Reserved)
(XEN) (GUEST: 60) 00000000000A0000 - 00000000000C0000 (Type 16)
(XEN) (GUEST: 60) 00000000000F0000 - 0000000000100000 (Reserved)
(XEN) (GUEST: 60) 0000000000100000 - 000000000FFFE000 (RAM)
(XEN) (GUEST: 60) 000000000FFFE000 - 000000000FFFF000 (Type 18)
(XEN) (GUEST: 60) 000000000FFFF000 - 0000000010000000 (Type 17)
(XEN) (GUEST: 60) 0000000010000000 - 0000000010003000 (ACPI NVS)
(XEN) (GUEST: 60) 0000000010003000 - 000000001000D000 (ACPI Data)
(XEN) (GUEST: 60) 00000000FEC00000 - 0000000100000000 (Type 16)
(XEN) (GUEST: 60)
(XEN) (GUEST: 60) Start BIOS ...
(XEN) (GUEST: 60) Starting emulated 16-bit real-mode: ip=F000:FFF0
(XEN) (GUEST: 60) rombios.c,v 1.138 2005/05/07 15:55:26 vruppert Exp $
(XEN) HVM_PIT: guest freq in cycles=189652990
(XEN) (GUEST: 60) Remapping master: ICW2 0x8 -> 0x20
(XEN) (GUEST: 60) Remapping slave: ICW2 0x70 -> 0x28
(XEN) (GUEST: 60) VGABios $Id: vgabios.c,v 1.61 2005/05/24 16:50:50
vruppert Exp $ (XEN) (GUEST: 60) HVMAssist BIOS, 1 cpu, $Revision: 1.138
$ $Date: 2005/05/07 15:55:26 $
(XEN) (GUEST: 60)
(XEN) (GUEST: 60) ata0-0: PCHS=6243/16/63 translation=lba
LCHS=780/128/63
(XEN) (GUEST: 60) ata0 master: QEMU HARDDISK ATA-2 Hard-Disk (3073
MBytes)
(XEN) (GUEST: 60) ata0 slave: Unknown device
(XEN) (GUEST: 60) ata1 master: QEMU CD-ROM ATAPI-4 CD-Rom/DVD-Rom
(XEN) (GUEST: 60) ata1 slave: Unknown device
(XEN) (GUEST: 60)
(XEN) (GUEST: 60) Booting from Hard Disk...
(XEN) (GUEST: 60) unsupported PCI BIOS function 0x0E
(XEN) (GUEST: 60) int13_harddisk: function 15, unmapped device for
ELDL=81
(XEN) __hvm_bug at io.c:392
(XEN) ----[ Xen-3.0-unstable Not tainted ]----
(XEN) CPU: 1
(XEN) EIP: f000:[<00002555>]
(XEN) EFLAGS: 00023246 CONTEXT: hvm
(XEN) eax: 00000149 ebx: 00000000 ecx: 0000002a edx: 000001f0
(XEN) esi: 00005017 edi: 000f0b72 ebp: 00000990 esp: 00000990
(XEN) cr0: 00050032 cr3: 09be7000
(XEN) ds: 1a49 es: 1a49 fs: 0060 gs: 0060 ss: 1a49 cs: f000
(XEN) domain_crash_sync called from io.c:392
(XEN) Domain 60 (vcpu#0) crashed on cpu#1:
(XEN) ----[ Xen-3.0-unstable Not tainted ]----
(XEN) CPU: 1
(XEN) EIP: f000:[<00002555>]
(XEN) EFLAGS: 00023246 CONTEXT: hvm
(XEN) eax: 00000149 ebx: 00000000 ecx: 0000002a edx: 000001f0
(XEN) esi: 00005017 edi: 000f0b72 ebp: 00000990 esp: 00000990
(XEN) cr0: 00050032 cr3: 09be7000
(XEN) ds: 1a49 es: 1a49 fs: 0060 gs: 0060 ss: 1a49 cs: f000
(XEN) (GUEST: 61) HVM Loader
(XEN) (GUEST: 61) Loading ROMBIOS ...
(XEN) (GUEST: 61) Loading Cirrus VGABIOS ...
(XEN) (GUEST: 61) Loading VMXAssist ...
(XEN) (GUEST: 61) VMX go ...
(XEN) (GUEST: 61) VMXAssist (Apr 5 2006)
(XEN) (GUEST: 61) Memory size 256 MB
(XEN) (GUEST: 61) E820 map:
(XEN) (GUEST: 61) 0000000000000000 - 000000000009F800 (RAM)
(XEN) (GUEST: 61) 000000000009F800 - 00000000000A0000 (Reserved)
(XEN) (GUEST: 61) 00000000000A0000 - 00000000000C0000 (Type 16)
(XEN) (GUEST: 61) 00000000000F0000 - 0000000000100000 (Reserved)
(XEN) (GUEST: 61) 0000000000100000 - 000000000FFFE000 (RAM)
(XEN) (GUEST: 61) 000000000FFFE000 - 000000000FFFF000 (Type 18)
(XEN) (GUEST: 61) 000000000FFFF000 - 0000000010000000 (Type 17)
(XEN) (GUEST: 61) 0000000010000000 - 0000000010003000 (ACPI NVS)
(XEN) (GUEST: 61) 0000000010003000 - 000000001000D000 (ACPI Data)
(XEN) (GUEST: 61) 00000000FEC00000 - 0000000100000000 (Type 16)
(XEN) (GUEST: 61)
(XEN) (GUEST: 61) Start BIOS ...
(XEN) (GUEST: 61) Starting emulated 16-bit real-mode: ip=F000:FFF0
(XEN) (GUEST: 61) rombios.c,v 1.138 2005/05/07 15:55:26 vruppert Exp $
(XEN) HVM_PIT: guest freq in cycles=189652990
(XEN) (GUEST: 61) Remapping master: ICW2 0x8 -> 0x20
(XEN) (GUEST: 61) Remapping slave: ICW2 0x70 -> 0x28
(XEN) (GUEST: 61) VGABios $Id: vgabios.c,v 1.61 2005/05/24 16:50:50
vruppert Exp $ (XEN) (GUEST: 61) HVMAssist BIOS, 1 cpu, $Revision: 1.138
$ $Date: 2005/05/07 15:55:26 $
(XEN) (GUEST: 61)
(XEN) (GUEST: 61) ata0-0: PCHS=6243/16/63 translation=lba
LCHS=780/128/63
(XEN) (GUEST: 61) ata0 master: QEMU HARDDISK ATA-2 Hard-Disk (3073
MBytes)
(XEN) (GUEST: 61) ata0 slave: Unknown device
(XEN) (GUEST: 61) ata1 master: QEMU CD-ROM ATAPI-4 CD-Rom/DVD-Rom
(XEN) (GUEST: 61) ata1 slave: Unknown device
(XEN) (GUEST: 61)
(XEN) (GUEST: 61) Booting from Hard Disk...
(XEN) (GUEST: 61) unsupported PCI BIOS function 0x0E
(XEN) (GUEST: 61) int13_harddisk: function 15, unmapped device for
ELDL=81
(XEN) __hvm_bug at io.c:392
(XEN) ----[ Xen-3.0-unstable Not tainted ]----
(XEN) CPU: 1
(XEN) EIP: f000:[<00002555>]
(XEN) EFLAGS: 00023246 CONTEXT: hvm
(XEN) eax: 00000149 ebx: 00000000 ecx: 0000002a edx: 000001f0
(XEN) esi: 00005017 edi: 000f0b72 ebp: 00000990 esp: 00000990
(XEN) cr0: 00050032 cr3: 297e7000
(XEN) ds: 1a49 es: 1a49 fs: 0060 gs: 0060 ss: 1a49 cs: f000
(XEN) domain_crash_sync called from io.c:392
(XEN) Domain 61 (vcpu#0) crashed on cpu#1:
(XEN) ----[ Xen-3.0-unstable Not tainted ]----
(XEN) CPU: 1
(XEN) EIP: f000:[<00002555>]
(XEN) EFLAGS: 00023246 CONTEXT: hvm
(XEN) eax: 00000149 ebx: 00000000 ecx: 0000002a edx: 000001f0
(XEN) esi: 00005017 edi: 000f0b72
[-- Attachment #2: xm-test-32.passfail --]
[-- Type: application/octet-stream, Size: 5510 bytes --]
REASON: Block-attach not supported for HVM domains
SKIP: 01_block_attach_device_pos.test
REASON: Block-attach not supported for HVM domains
SKIP: 02_block_attach_file_device_pos.test
REASON: Block-attach not supported for HVM domains
SKIP: 04_block_attach_device_repeatedly_pos.test
REASON: Block-attach not supported for HVM domains
SKIP: 05_block_attach_and_dettach_device_repeatedly_pos.test
REASON: Block-attach not supported for HVM domains
SKIP: 06_block_attach_baddomain_neg.test
REASON: Block-attach not supported for HVM domains
SKIP: 07_block_attach_baddevice_neg.test
REASON: Block-attach not supported for HVM domains
SKIP: 08_block_attach_bad_filedevice_neg.test
REASON: Block-attach not supported for HVM domains
SKIP: 09_block_attach_and_dettach_device_check_data_pos.test
REASON: Block-attach not supported for HVM domains
SKIP: 11_block_attach_shared_dom0.test
REASON: Block-attach not supported for HVM domains
SKIP: 12_block_attach_shared_domU.test
REASON: Block-list not supported for HVM domains
SKIP: 01_block-list_pos.test
REASON: Block-list not supported for HVM domains
SKIP: 02_block-list_attachbd_pos.test
REASON: Block-list not supported for HVM domains
SKIP: 03_block-list_anotherbd_pos.test
REASON: Block-list not supported for HVM domains
SKIP: 04_block-list_nodb_pos.test
PASS: 05_block-list_nonexist_neg.test
REASON: Block-list not supported for HVM domains
SKIP: 06_block-list_checkremove_pos.test
REASON: Block-detach not supported for HVM domains
SKIP: 01_block-destroy_btblock_pos.test
REASON: Block-detach not supported for HVM domains
SKIP: 02_block-destroy_rtblock_pos.test
PASS: 03_block-destroy_nonexist_neg.test
REASON: Block-detach not supported for HVM domains
SKIP: 04_block-destroy_nonattached_neg.test
REASON: Block-detach not supported for HVM domains
SKIP: 05_block-destroy_byname_pos.test
REASON: Block-detach not supported for HVM domains
SKIP: 06_block-destroy_check_list_pos.test
PASS: 01_console_badopt_neg.test
PASS: 02_console_baddom_neg.test
PASS: 01_destroy_basic_pos.test
PASS: 02_destroy_noparm_neg.test
PASS: 03_destroy_nonexist_neg.test
PASS: 04_destroy_badparm_neg.test
PASS: 05_destroy_byid_pos.test
PASS: 06_destroy_dom0_neg.test
PASS: 07_destroy_stale_pos.test
PASS: 01_dmesg_basic_pos.test
PASS: 02_dmesg_basic_neg.test
PASS: 01_domid_basic_pos.test
PASS: 02_domid_basic_neg.test
PASS: 01_domname_basic_pos.test
PASS: 02_domname_basic_neg.test
PASS: 01_help_basic_pos.test
PASS: 02_help_basic_neg.test
PASS: 03_help_badparm_neg.test
PASS: 04_help_long_pos.test
PASS: 05_help_nonroot_pos.test
PASS: 06_help_allcmds.test
PASS: 01_info_basic_pos.test
PASS: 02_info_compiledata_pos.test
PASS: 01_list_basic_pos.test
PASS: 02_list_badparm_neg.test
PASS: 03_list_nonexist_neg.test
PASS: 04_list_goodparm_pos.test
PASS: 05_list_long_pos.test
PASS: 06_list_nonroot.test
REASON: Mem-max not supported for HVM domains
SKIP: 01_memmax_badparm_neg.test
REASON: Mem-set not supported for HVM domains
SKIP: 01_memset_basic_pos.test
REASON: Mem-set not supported for HVM domains
SKIP: 02_memset_badparm_neg.test
REASON: Mem-set not supported for HVM domains
SKIP: 03_memset_random_pos.test
REASON: Mem-set not supported for HVM domains
SKIP: 04_memset_smallmem_pos.test
REASON: ping loopback failed for size 65507. ping eth0 failed for size 65507.
XFAIL: 02_network_local_ping_pos.test
XPASS: 05_network_dom0_ping_pos.test
XPASS: 11_network_domU_ping_pos.test
REASON: Network-attach not supported for HVM domains
SKIP: 01_network_attach_pos.test
REASON: Network-attach not supported for HVM domains
SKIP: 02_network_attach_detach_pos.test
REASON: Network-attach not supported for HVM domains
SKIP: 03_network_attach_detach_multiple_pos.test
PASS: 04_network_attach_baddomain_neg.test
PASS: 01_pause_basic_pos.test
PASS: 02_pause_badopt_neg.test
PASS: 03_pause_badname_neg.test
PASS: 04_pause_badid_neg.test
PASS: 01_reboot_basic_pos.test
PASS: 02_reboot_badopt_neg.test
PASS: 03_reboot_badname_neg.test
PASS: 01_sedf_multi_pos.test
PASS: 01_shutdown_basic_pos.test
PASS: 02_shutdown_badparm_neg.test
PASS: 03_shutdown_nonexist_neg.test
REASON: Sysrq not supported for HVM domains
SKIP: 01_sysrq_basic_neg.test
REASON: Sysrq not supported for HVM domains
SKIP: 02_sysrq_sync_pos.test
REASON: Sysrq not supported for HVM domains
SKIP: 03_sysrq_withreboot_pos.test
PASS: 01_unpause_basic_pos.test
PASS: 01_vcpu-disable_basic_pos.test
REASON: vcpu-pin is supported for HVM domains
SKIP: 01_vcpu-pin_basic_pos.test
REASON: /proc/cpuinfo says xend didn't enforce dom0_cpus (2 != 1)
FAIL: 01_enforce_dom0_cpus_basic_pos.test
REASON: Save currently not supported for HVM domains
SKIP: 01_save_basic_pos.test
REASON: Save currently not supported for HVM domains
SKIP: 02_save_badparm_neg.test
REASON: Save currently not supported for HVM domains
SKIP: 03_save_bogusfile_neg.test
REASON: Restore currently not supported for HVM domains
SKIP: 01_restore_basic_pos.test
REASON: Restore currently not supported for HVM domains
SKIP: 02_restore_badparm_neg.test
REASON: Restore currently not supported for HVM domains
SKIP: 03_restore_badfilename_neg.test
REASON: Restore currently not supported for HVM domains
SKIP: 04_restore_withdevices_pos.test
REASON: Migrate currently not supported for HVM domains
SKIP: 01_migrate_localhost_pos.test
[-- Attachment #3: xm-test-32e.passfail --]
[-- Type: application/octet-stream, Size: 5511 bytes --]
REASON: Block-attach not supported for HVM domains
SKIP: 01_block_attach_device_pos.test
REASON: Block-attach not supported for HVM domains
SKIP: 02_block_attach_file_device_pos.test
REASON: Block-attach not supported for HVM domains
SKIP: 04_block_attach_device_repeatedly_pos.test
REASON: Block-attach not supported for HVM domains
SKIP: 05_block_attach_and_dettach_device_repeatedly_pos.test
REASON: Block-attach not supported for HVM domains
SKIP: 06_block_attach_baddomain_neg.test
REASON: Block-attach not supported for HVM domains
SKIP: 07_block_attach_baddevice_neg.test
REASON: Block-attach not supported for HVM domains
SKIP: 08_block_attach_bad_filedevice_neg.test
REASON: Block-attach not supported for HVM domains
SKIP: 09_block_attach_and_dettach_device_check_data_pos.test
REASON: Block-attach not supported for HVM domains
SKIP: 11_block_attach_shared_dom0.test
REASON: Block-attach not supported for HVM domains
SKIP: 12_block_attach_shared_domU.test
REASON: Block-list not supported for HVM domains
SKIP: 01_block-list_pos.test
REASON: Block-list not supported for HVM domains
SKIP: 02_block-list_attachbd_pos.test
REASON: Block-list not supported for HVM domains
SKIP: 03_block-list_anotherbd_pos.test
REASON: Block-list not supported for HVM domains
SKIP: 04_block-list_nodb_pos.test
PASS: 05_block-list_nonexist_neg.test
REASON: Block-list not supported for HVM domains
SKIP: 06_block-list_checkremove_pos.test
REASON: Block-detach not supported for HVM domains
SKIP: 01_block-destroy_btblock_pos.test
REASON: Block-detach not supported for HVM domains
SKIP: 02_block-destroy_rtblock_pos.test
PASS: 03_block-destroy_nonexist_neg.test
REASON: Block-detach not supported for HVM domains
SKIP: 04_block-destroy_nonattached_neg.test
REASON: Block-detach not supported for HVM domains
SKIP: 05_block-destroy_byname_pos.test
REASON: Block-detach not supported for HVM domains
SKIP: 06_block-destroy_check_list_pos.test
PASS: 01_console_badopt_neg.test
PASS: 02_console_baddom_neg.test
PASS: 01_destroy_basic_pos.test
PASS: 02_destroy_noparm_neg.test
PASS: 03_destroy_nonexist_neg.test
PASS: 04_destroy_badparm_neg.test
PASS: 05_destroy_byid_pos.test
PASS: 06_destroy_dom0_neg.test
PASS: 07_destroy_stale_pos.test
PASS: 01_dmesg_basic_pos.test
PASS: 02_dmesg_basic_neg.test
PASS: 01_domid_basic_pos.test
PASS: 02_domid_basic_neg.test
PASS: 01_domname_basic_pos.test
PASS: 02_domname_basic_neg.test
PASS: 01_help_basic_pos.test
PASS: 02_help_basic_neg.test
PASS: 03_help_badparm_neg.test
PASS: 04_help_long_pos.test
PASS: 05_help_nonroot_pos.test
PASS: 06_help_allcmds.test
PASS: 01_info_basic_pos.test
PASS: 02_info_compiledata_pos.test
PASS: 01_list_basic_pos.test
PASS: 02_list_badparm_neg.test
PASS: 03_list_nonexist_neg.test
PASS: 04_list_goodparm_pos.test
PASS: 05_list_long_pos.test
PASS: 06_list_nonroot.test
REASON: Mem-max not supported for HVM domains
SKIP: 01_memmax_badparm_neg.test
REASON: Mem-set not supported for HVM domains
SKIP: 01_memset_basic_pos.test
REASON: Mem-set not supported for HVM domains
SKIP: 02_memset_badparm_neg.test
REASON: Mem-set not supported for HVM domains
SKIP: 03_memset_random_pos.test
REASON: Mem-set not supported for HVM domains
SKIP: 04_memset_smallmem_pos.test
REASON: ping loopback failed for size 65507. ping eth0 failed for size 65507.
XFAIL: 02_network_local_ping_pos.test
XPASS: 05_network_dom0_ping_pos.test
XPASS: 11_network_domU_ping_pos.test
REASON: Network-attach not supported for HVM domains
SKIP: 01_network_attach_pos.test
REASON: Network-attach not supported for HVM domains
SKIP: 02_network_attach_detach_pos.test
REASON: Network-attach not supported for HVM domains
SKIP: 03_network_attach_detach_multiple_pos.test
PASS: 04_network_attach_baddomain_neg.test
PASS: 01_pause_basic_pos.test
PASS: 02_pause_badopt_neg.test
PASS: 03_pause_badname_neg.test
PASS: 04_pause_badid_neg.test
PASS: 01_reboot_basic_pos.test
PASS: 02_reboot_badopt_neg.test
PASS: 03_reboot_badname_neg.test
PASS: 01_sedf_multi_pos.test
PASS: 01_shutdown_basic_pos.test
PASS: 02_shutdown_badparm_neg.test
PASS: 03_shutdown_nonexist_neg.test
REASON: Sysrq not supported for HVM domains
SKIP: 01_sysrq_basic_neg.test
REASON: Sysrq not supported for HVM domains
SKIP: 02_sysrq_sync_pos.test
REASON: Sysrq not supported for HVM domains
SKIP: 03_sysrq_withreboot_pos.test
PASS: 01_unpause_basic_pos.test
PASS: 01_vcpu-disable_basic_pos.test
REASON: vcpu-pin is supported for HVM domains
SKIP: 01_vcpu-pin_basic_pos.test
REASON: /proc/cpuinfo says xend didn't enforce dom0_cpus (16 != 1)
FAIL: 01_enforce_dom0_cpus_basic_pos.test
REASON: Save currently not supported for HVM domains
SKIP: 01_save_basic_pos.test
REASON: Save currently not supported for HVM domains
SKIP: 02_save_badparm_neg.test
REASON: Save currently not supported for HVM domains
SKIP: 03_save_bogusfile_neg.test
REASON: Restore currently not supported for HVM domains
SKIP: 01_restore_basic_pos.test
REASON: Restore currently not supported for HVM domains
SKIP: 02_restore_badparm_neg.test
REASON: Restore currently not supported for HVM domains
SKIP: 03_restore_badfilename_neg.test
REASON: Restore currently not supported for HVM domains
SKIP: 04_restore_withdevices_pos.test
REASON: Migrate currently not supported for HVM domains
SKIP: 01_migrate_localhost_pos.test
[-- Attachment #4: xm-test-pae.passfail --]
[-- Type: application/octet-stream, Size: 5510 bytes --]
REASON: Block-attach not supported for HVM domains
SKIP: 01_block_attach_device_pos.test
REASON: Block-attach not supported for HVM domains
SKIP: 02_block_attach_file_device_pos.test
REASON: Block-attach not supported for HVM domains
SKIP: 04_block_attach_device_repeatedly_pos.test
REASON: Block-attach not supported for HVM domains
SKIP: 05_block_attach_and_dettach_device_repeatedly_pos.test
REASON: Block-attach not supported for HVM domains
SKIP: 06_block_attach_baddomain_neg.test
REASON: Block-attach not supported for HVM domains
SKIP: 07_block_attach_baddevice_neg.test
REASON: Block-attach not supported for HVM domains
SKIP: 08_block_attach_bad_filedevice_neg.test
REASON: Block-attach not supported for HVM domains
SKIP: 09_block_attach_and_dettach_device_check_data_pos.test
REASON: Block-attach not supported for HVM domains
SKIP: 11_block_attach_shared_dom0.test
REASON: Block-attach not supported for HVM domains
SKIP: 12_block_attach_shared_domU.test
REASON: Block-list not supported for HVM domains
SKIP: 01_block-list_pos.test
REASON: Block-list not supported for HVM domains
SKIP: 02_block-list_attachbd_pos.test
REASON: Block-list not supported for HVM domains
SKIP: 03_block-list_anotherbd_pos.test
REASON: Block-list not supported for HVM domains
SKIP: 04_block-list_nodb_pos.test
PASS: 05_block-list_nonexist_neg.test
REASON: Block-list not supported for HVM domains
SKIP: 06_block-list_checkremove_pos.test
REASON: Block-detach not supported for HVM domains
SKIP: 01_block-destroy_btblock_pos.test
REASON: Block-detach not supported for HVM domains
SKIP: 02_block-destroy_rtblock_pos.test
PASS: 03_block-destroy_nonexist_neg.test
REASON: Block-detach not supported for HVM domains
SKIP: 04_block-destroy_nonattached_neg.test
REASON: Block-detach not supported for HVM domains
SKIP: 05_block-destroy_byname_pos.test
REASON: Block-detach not supported for HVM domains
SKIP: 06_block-destroy_check_list_pos.test
PASS: 01_console_badopt_neg.test
PASS: 02_console_baddom_neg.test
PASS: 01_destroy_basic_pos.test
PASS: 02_destroy_noparm_neg.test
PASS: 03_destroy_nonexist_neg.test
PASS: 04_destroy_badparm_neg.test
PASS: 05_destroy_byid_pos.test
PASS: 06_destroy_dom0_neg.test
PASS: 07_destroy_stale_pos.test
PASS: 01_dmesg_basic_pos.test
PASS: 02_dmesg_basic_neg.test
PASS: 01_domid_basic_pos.test
PASS: 02_domid_basic_neg.test
PASS: 01_domname_basic_pos.test
PASS: 02_domname_basic_neg.test
PASS: 01_help_basic_pos.test
PASS: 02_help_basic_neg.test
PASS: 03_help_badparm_neg.test
PASS: 04_help_long_pos.test
PASS: 05_help_nonroot_pos.test
PASS: 06_help_allcmds.test
PASS: 01_info_basic_pos.test
PASS: 02_info_compiledata_pos.test
PASS: 01_list_basic_pos.test
PASS: 02_list_badparm_neg.test
PASS: 03_list_nonexist_neg.test
PASS: 04_list_goodparm_pos.test
PASS: 05_list_long_pos.test
PASS: 06_list_nonroot.test
REASON: Mem-max not supported for HVM domains
SKIP: 01_memmax_badparm_neg.test
REASON: Mem-set not supported for HVM domains
SKIP: 01_memset_basic_pos.test
REASON: Mem-set not supported for HVM domains
SKIP: 02_memset_badparm_neg.test
REASON: Mem-set not supported for HVM domains
SKIP: 03_memset_random_pos.test
REASON: Mem-set not supported for HVM domains
SKIP: 04_memset_smallmem_pos.test
REASON: ping loopback failed for size 65507. ping eth0 failed for size 65507.
XFAIL: 02_network_local_ping_pos.test
XPASS: 05_network_dom0_ping_pos.test
XPASS: 11_network_domU_ping_pos.test
REASON: Network-attach not supported for HVM domains
SKIP: 01_network_attach_pos.test
REASON: Network-attach not supported for HVM domains
SKIP: 02_network_attach_detach_pos.test
REASON: Network-attach not supported for HVM domains
SKIP: 03_network_attach_detach_multiple_pos.test
PASS: 04_network_attach_baddomain_neg.test
PASS: 01_pause_basic_pos.test
PASS: 02_pause_badopt_neg.test
PASS: 03_pause_badname_neg.test
PASS: 04_pause_badid_neg.test
PASS: 01_reboot_basic_pos.test
PASS: 02_reboot_badopt_neg.test
PASS: 03_reboot_badname_neg.test
PASS: 01_sedf_multi_pos.test
PASS: 01_shutdown_basic_pos.test
PASS: 02_shutdown_badparm_neg.test
PASS: 03_shutdown_nonexist_neg.test
REASON: Sysrq not supported for HVM domains
SKIP: 01_sysrq_basic_neg.test
REASON: Sysrq not supported for HVM domains
SKIP: 02_sysrq_sync_pos.test
REASON: Sysrq not supported for HVM domains
SKIP: 03_sysrq_withreboot_pos.test
PASS: 01_unpause_basic_pos.test
PASS: 01_vcpu-disable_basic_pos.test
REASON: vcpu-pin is supported for HVM domains
SKIP: 01_vcpu-pin_basic_pos.test
REASON: /proc/cpuinfo says xend didn't enforce dom0_cpus (2 != 1)
FAIL: 01_enforce_dom0_cpus_basic_pos.test
REASON: Save currently not supported for HVM domains
SKIP: 01_save_basic_pos.test
REASON: Save currently not supported for HVM domains
SKIP: 02_save_badparm_neg.test
REASON: Save currently not supported for HVM domains
SKIP: 03_save_bogusfile_neg.test
REASON: Restore currently not supported for HVM domains
SKIP: 01_restore_basic_pos.test
REASON: Restore currently not supported for HVM domains
SKIP: 02_restore_badparm_neg.test
REASON: Restore currently not supported for HVM domains
SKIP: 03_restore_badfilename_neg.test
REASON: Restore currently not supported for HVM domains
SKIP: 04_restore_withdevices_pos.test
REASON: Migrate currently not supported for HVM domains
SKIP: 01_migrate_localhost_pos.test
[-- Attachment #5: Type: text/plain, Size: 138 bytes --]
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xensource.com
http://lists.xensource.com/xen-devel
^ permalink raw reply
* Re: [Alsa-devel] Slab corruptions & Re: 2.6.17-rc1: Oops in sound applications
From: Takashi Iwai @ 2006-04-05 12:39 UTC (permalink / raw)
To: Jan Niehusmann; +Cc: Ken Moffat, linux-kernel, alsa-devel
In-Reply-To: <20060405121537.GA4807@knautsch.gondor.com>
At Wed, 5 Apr 2006 14:15:38 +0200,
Jan Niehusmann wrote:
>
> On Wed, Apr 05, 2006 at 01:14:54PM +0200, Takashi Iwai wrote:
> > Try the patch below. The change in pcm_native.c may be unnecessary,
> > but it's better so.
> > If it works, I'll submit the patches with a proper log.
>
> The patch (applied to 2.6.17-rc1) does fix the oops, but sound is still
> garbled with twinkle using /dev/dsp.
>
> About this garbled sound: I call an echo service on my asterisk server,
> which just echoes back everything I say. Works well using /dev/dsp with
> 2.6.16, but with 2.6.17-rc1, even with the patch applied, I hear no echo
> at all for ~1s. After that, I hear a strongly distorted echo.
Did you have any special setting (e.g. oss proc file)?
Takashi
^ permalink raw reply
page: next (older) | prev (newer) | latest
- recent:[subjects (threaded)|topics (new)|topics (active)]
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.