message: nydusd: store a global blob cache manager in DaemonController
  Store a global blob cache manager in DaemonController, so it could be
  shared by the fscache and blobcache serivces later.
diff: @@ -35,6 +35,7 @@ use nydus::FsBackendType;
  use nydus_app::{dump_program_info, setup_logging, BuildTimeInfo};
  use crate::api_server_glue::ApiServerController;
  +use crate::blob_cache::BlobCacheMgr;
  use crate::daemon::{DaemonError, NydusDaemon};
  use crate::fs_service::{FsBackendMountCmd, FsService};
  use crate::service_controller::create_daemon;
  @@ -67,6 +68,7 @@ pub struct DaemonController {
  active: AtomicBool,
  singleton_mode: AtomicBool,
  daemon: Mutex<Option<Arc<dyn NydusDaemon>>>,
  + blob_cache_mgr: Mutex<Option<Arc<BlobCacheMgr>>>,
  // For backward compatibility to support singleton fusedev/virtiofs server.
  fs_service: Mutex<Option<Arc<dyn FsService>>>,
  waker: Arc<Waker>,
  @@ -83,6 +85,7 @@ impl DaemonController {
  active: AtomicBool::new(true),
  singleton_mode: AtomicBool::new(true),
  daemon: Mutex::new(None),
  + blob_cache_mgr: Mutex::new(None),
  fs_service: Mutex::new(None),
  waker: Arc::new(waker),
  poller: Mutex::new(poller),
  @@ -116,6 +119,16 @@ impl DaemonController {
  self.daemon.lock().unwrap().clone().unwrap()
  }
  + /// Get the optional blob cache manager.
  + pub fn get_blob_cache_mgr(&self) -> Option<Arc<BlobCacheMgr>> {
  + self.blob_cache_mgr.lock().unwrap().clone()
  + }
  +
  + /// Set the optional blob cache manager.
  + pub fn set_blob_cache_mgr(&self, mgr: Arc<BlobCacheMgr>) -> Option<Arc<BlobCacheMgr>> {
  + self.blob_cache_mgr.lock().unwrap().replace(mgr)
  + }
  +
  /// Set the default fs service object.
  pub fn set_fs_service(&self, service: Arc<dyn FsService>) -> Option<Arc<dyn FsService>> {
  self.fs_service.lock().unwrap().replace(service)
  