diff -u -r orig/gvfs-0.2.5/hal//ghalmount.c gvfs-0.2.5/hal//ghalmount.c
--- orig/gvfs-0.2.5/hal//ghalmount.c	Fri May  9 06:51:33 2008
+++ gvfs-0.2.5/hal//ghalmount.c	Wed Oct  8 13:52:47 2008
@@ -568,7 +568,7 @@
   if (drive_device == NULL)
     goto fail;
   
-  /* g_warning ("drive_device = %p", drive_device); */
+  g_warning ("drive_device = %p in g_hal_mount_new_for_hal_device", drive_device); 
   
   mount = g_object_new (G_TYPE_HAL_MOUNT, NULL);
   mount->volume_monitor = volume_monitor;
@@ -663,22 +663,22 @@
                                                              "volume",
                                                              "block.device",
                                                              mount->device_path);
-      /* g_warning ("device = %p for %s", device, mount->device_path); */
+      g_warning ("device = %p for %s", device, mount->device_path);
       if (device != NULL)
         {      
-          /* g_warning ("udi = %s", hal_device_get_udi (device)); */
+          g_warning ("udi = %s", hal_device_get_udi (device)); 
           
           storage_udi = hal_device_get_property_string (device, "block.storage_device");
           if (storage_udi == NULL)
             goto not_hal;
 
-          /* g_warning ("storage_udi = %s", storage_udi); */
+          g_warning ("storage_udi = %s", storage_udi);
           
           drive_device = hal_pool_get_device_by_udi (pool, storage_udi);
           if (drive_device == NULL)
             goto not_hal;
 
-          /* g_warning ("drive_device = %p", drive_device); */
+          g_warning ("drive_device = %p", drive_device); 
           
           mount->device = g_object_ref (device);
           mount->drive_device = g_object_ref (drive_device);
diff -u -r orig/gvfs-0.2.5/hal//ghalvolume.c gvfs-0.2.5/hal//ghalvolume.c
--- orig/gvfs-0.2.5/hal//ghalvolume.c	Fri May  9 06:51:33 2008
+++ gvfs-0.2.5/hal//ghalvolume.c	Wed Oct  8 13:52:47 2008
@@ -996,6 +996,7 @@
               hal_volume->device_path);*/
 
   G_LOCK (hal_volume);
+  if (strncmp(hal_volume->device_path,"/tmp/SUNWut/",strlen("/tmp/SUNWut/"))){
   if (hal_volume->foreign_mount_root != NULL)
     {
       ForeignMountOp *data;
@@ -1021,6 +1022,7 @@
         argv[4] = "-n";
       spawn_do (volume, cancellable, callback, user_data, argv);
     }
+  }
   G_UNLOCK (hal_volume);
 }
 
diff -u -r orig/gvfs-0.2.5/hal//ghalvolumemonitor.c gvfs-0.2.5/hal//ghalvolumemonitor.c
--- orig/gvfs-0.2.5/hal//ghalvolumemonitor.c	Fri May  9 06:51:33 2008
+++ gvfs-0.2.5/hal//ghalvolumemonitor.c	Wed Oct  8 13:52:47 2008
@@ -27,6 +27,7 @@
 #include <limits.h>
 #include <string.h>
 #include <stdlib.h>
+#include <stdio.h>
 
 #include <glib.h>
 #include <glib/gi18n-lib.h>
@@ -38,6 +39,12 @@
 #include "ghaldrive.h"
 #include "hal-pool.h"
 
+#include <fcntl.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <unistd.h>
+#include <sys/types.h>
+
 /* We use this static variable for enforcing a singleton pattern since
  * the get_mount_for_mount_path() method on GNativeVolumeMonitor calls
  * us without an instance..  and ideally we want to piggyback on an
@@ -790,6 +797,9 @@
   if (g_str_has_prefix (mount_path, "/media/"))
     return TRUE;
 
+  if (g_str_has_prefix (mount_path, "/tmp/SUNWut/mnt/"))
+    return TRUE;
+
   if (g_str_has_prefix (mount_path, g_get_home_dir ()))
     return TRUE;
 
@@ -849,16 +859,16 @@
 {
   const char *device_mount_point;
 
-  device_mount_point = hal_device_get_property_string (d, "volume.mount_point");
+ /* device_mount_point = hal_device_get_property_string (d, "volume.mount_point");
   if (device_mount_point != NULL && strlen (device_mount_point) > 0)
     {
       GUnixMountEntry *mount_entry;
 
-      /*g_warning ("device_mount_point = '%s'", device_mount_point);*/
+      g_warning ("device_mount_point = '%s'", device_mount_point);
 
       mount_entry = g_unix_mount_at (device_mount_point, NULL);
       if (mount_entry != NULL) {
-        if (!g_unix_mount_guess_should_display (mount_entry))
+        if (!g_unix_mount_guess_should_display (mount_entry)&&!g_str_has_prefix(mount_entry->mount_path,"/tmp/SUNWut/"))
           {
             g_unix_mount_free (mount_entry);
             return TRUE;
@@ -866,7 +876,7 @@
         g_unix_mount_free (mount_entry);
       }
     }
-
+*/
   return FALSE;
 }
 
@@ -877,6 +887,9 @@
   const char *volume_fsusage;
   GUnixMountPoint *mount_point;
   
+  if(is_others_sr_usb(d))
+    return TRUE;
+  
   volume_fsusage = hal_device_get_property_string (d, "volume.fsusage");
   volume_ignore = hal_device_get_property_bool (d, "volume.ignore");
   
@@ -932,7 +945,9 @@
   const char *drive_udi;
   gboolean all_volumes_ignored, got_volumes;
 
-  /* never ignore drives with removable media */
+  /* never ignore drives with removable media except others' SUNWut devices*/
+  if(is_others_sr_usb(d))
+    return TRUE;
   if (hal_device_get_property_bool (d, "storage.removable"))
     return FALSE;
 
@@ -1049,7 +1064,7 @@
                 &added_mounts, &removed_mounts);
   update_cameras (monitor, &added_volumes, &removed_volumes);
   G_UNLOCK (hal_vm);
-
+  g_warning("Emit changes=%d\n",emit_changes);
   if (emit_changes)
     {
       lists = g_new0 (ChangedLists, 1);
@@ -1128,7 +1143,7 @@
       drive = find_drive_by_udi (monitor, hal_device_get_udi (d));
       if (drive == NULL)
         {
-          /*g_warning ("hal adding drive %s", hal_device_get_property_string (d, "block.device"));*/
+          g_warning ("hal adding drive %s", hal_device_get_property_string (d, "block.device"));
           drive = g_hal_drive_new (G_VOLUME_MONITOR (monitor), d, monitor->pool);
           if (drive != NULL)
             {
@@ -1170,8 +1185,10 @@
     {
       HalDevice *d = l->data;
       ll = l->next;
-      if (should_volume_be_ignored (monitor->pool, d, fstab_mount_points))
+      if (should_volume_be_ignored (monitor->pool, d, fstab_mount_points)){
+	 g_warning("Ignoring volume %s ",  hal_device_get_property_string (d, "block.device"));
         new_volume_devices = g_list_delete_link (new_volume_devices, l);
+	}
     }
 
   g_list_foreach (new_volume_devices, (GFunc) g_object_ref, NULL);
@@ -1205,7 +1222,8 @@
         {
           drive = find_drive_by_udi (monitor, hal_device_get_property_string (d, "block.storage_device"));
           
-          /*g_warning ("hal adding vol %s (drive %p)", hal_device_get_property_string (d, "block.device"), drive);*/
+          g_warning ("hal adding vol %s (drive %p)", hal_device_get_property_string (d, "block.device"), drive);
+
           volume = g_hal_volume_new (G_VOLUME_MONITOR (monitor), 
                                      d, 
                                      monitor->pool, 
@@ -1253,8 +1271,9 @@
       ll = l->next;
 
       /* keep in sync with should_mount_be_ignored() */
-      if (!g_unix_mount_guess_should_display (mount_entry))
+      if (!g_unix_mount_guess_should_display (mount_entry)&&!g_str_has_prefix(g_unix_mount_get_mount_path (mount_entry),"/tmp/SUNWut/mnt/"))
         {
+          //g_warning ("hal ignoring mount %s", g_unix_mount_get_device_path (mount_entry));
           g_unix_mount_free (mount_entry);
           new_mounts = g_list_delete_link (new_mounts, l);
         }
@@ -1291,7 +1310,7 @@
       if (volume == NULL)
         volume = lookup_volume_for_mount_path (monitor, mount_path);
 
-      /*g_warning ("hal adding mount %s (vol %p)", g_unix_mount_get_device_path (mount_entry), volume);*/
+      g_warning ("hal adding mount %s (vol %p)", g_unix_mount_get_device_path (mount_entry), volume);
       mount = g_hal_mount_new (G_VOLUME_MONITOR (monitor), mount_entry, monitor->pool, volume);
       if (mount)
 	{
@@ -1564,3 +1583,34 @@
 				  "hal",
 				  1);
 }
+//returns true when this is  SunRay USB disk and it belongs to other user
+static gboolean
+is_others_sr_usb(HalDevice *d)
+{ 
+  char* bdevice;
+  struct stat st;
+  int my_uid;
+
+  bdevice=(char*)hal_device_get_property_string (d,"block.device");
+  if(bdevice){
+    if(strncmp(bdevice,"/tmp/SUNWut/",strlen("/tmp/SUNWut/"))){
+      g_warning("device  %s is not SR device",bdevice);
+      return FALSE;
+    }
+    if(stat(bdevice,&st)==-1){
+      g_warning("Can't stat %s",bdevice);
+      return FALSE;
+    }
+    if((my_uid=geteuid())!=st.st_uid){
+      g_warning("is_others returns true,my uid is %d, st_uid is %d",my_uid,st.st_uid);
+      return TRUE;   
+    }
+    else 
+      g_warning("is_others returns false,my uid is %d, st_uid is %d",my_uid,st.st_uid);
+  }
+  else 
+    g_warning("bdevice is NULL");
+  g_warning("is_others returns FALSE");
+  return FALSE;
+}
+
