public static StorApiStatus GetControllers(ref List <Controller> controllers) { StorApiStatus controllers2 = MarvellController.GetControllers(ref controllers); if (controllers2 != StorApiStatusEnum.STOR_NO_ERROR) { Storage.Debug("Marvell get controllers failed: {0}", new object[] { controllers2 }); } controllers2 = SpacesController.GetControllers(ref controllers); if (controllers2 != StorApiStatusEnum.STOR_NO_ERROR) { Storage.Debug("Storage Spaces get controllers failed: {0}", new object[] { controllers2 }); } return(StorApiStatusEnum.STOR_NO_ERROR); }
protected override void UpdateController(Controller controller) { UpdateCompletedEvent updateCompletedEvent = new UpdateCompletedEvent(); MarvellController marvellController = new MarvellController(((MarvellController)controller).AdapterId); StorApiStatus storApiStatus = marvellController.Update(); if (storApiStatus != StorApiStatusEnum.STOR_NO_ERROR) { updateCompletedEvent.updateStatus = storApiStatus; updateCompletedEvent.controller = controller; this.OnUpdateCompleted(updateCompletedEvent); return; } ListComparer <Drive> listComparer = new ListComparer <Drive>(); listComparer.Compare(controller.Drives, marvellController.Drives, new Func <Drive, Drive, bool>(Drive.CompareAndCopyStatus)); ListComparer <Volume> listComparer2 = new ListComparer <Volume>(); listComparer2.Compare(controller.Volumes, marvellController.Volumes, new Func <Volume, Volume, bool>(Volume.CompareInfo)); controller.Drives = marvellController.Drives; controller.Volumes = marvellController.Volumes; if (listComparer.AnythingChanged) { listComparer.removedItems.ForEach(delegate(ListComparer <Drive> .ItemData d) { DriveEvent driveEvent = new DriveEvent(); driveEvent.controller = controller; driveEvent.drive = d.newItem; driveEvent.oldDrive = d.oldItem; driveEvent.type = ControllerEventType.EVENT_TYPE_REMOVED; this.OnDriveChanged(driveEvent); }); listComparer.changedItems.ForEach(delegate(ListComparer <Drive> .ItemData d) { DriveEvent driveEvent = new DriveEvent(); driveEvent.controller = controller; driveEvent.drive = d.newItem; driveEvent.oldDrive = d.oldItem; driveEvent.type = ControllerEventType.EVENT_TYPE_CHANGED; this.OnDriveChanged(driveEvent); }); listComparer.addedItems.ForEach(delegate(ListComparer <Drive> .ItemData d) { DriveEvent driveEvent = new DriveEvent(); driveEvent.controller = controller; driveEvent.drive = d.newItem; driveEvent.oldDrive = d.oldItem; driveEvent.type = ControllerEventType.EVENT_TYPE_ADDED; this.OnDriveChanged(driveEvent); }); } if (listComparer2.AnythingChanged) { listComparer2.removedItems.ForEach(delegate(ListComparer <Volume> .ItemData d) { VolumeEvent volumeEvent = new VolumeEvent(); volumeEvent.controller = controller; volumeEvent.volume = d.newItem; volumeEvent.oldVolume = d.oldItem; volumeEvent.type = ControllerEventType.EVENT_TYPE_REMOVED; this.OnVolumeChanged(volumeEvent); }); listComparer2.changedItems.ForEach(delegate(ListComparer <Volume> .ItemData d) { VolumeEvent volumeEvent = new VolumeEvent(); volumeEvent.controller = controller; volumeEvent.volume = d.newItem; volumeEvent.oldVolume = d.oldItem; volumeEvent.type = ControllerEventType.EVENT_TYPE_CHANGED; this.OnVolumeChanged(volumeEvent); }); listComparer2.addedItems.ForEach(delegate(ListComparer <Volume> .ItemData d) { VolumeEvent volumeEvent = new VolumeEvent(); volumeEvent.controller = controller; volumeEvent.volume = d.newItem; volumeEvent.oldVolume = d.oldItem; volumeEvent.type = ControllerEventType.EVENT_TYPE_ADDED; this.OnVolumeChanged(volumeEvent); }); } updateCompletedEvent.updateStatus = StorApiStatusEnum.STOR_NO_ERROR; updateCompletedEvent.controller = controller; this.OnUpdateCompleted(updateCompletedEvent); }
public MarvellVolume(short id, MarvellController c) : base(id.ToString(), c) { this.mvid = id; this.blockIds = new List <short>(); }
public MarvellDrive(short id, MarvellController c) : base(id.ToString(), c) { this.mvid = id; }
public MarvellController(byte id) : base(MarvellController.MakeMarvellId(id)) { this.mvid = id; }
public new static StorApiStatus GetControllers(ref List <Controller> controllers) { StorApiStatus result = StorApiStatusEnum.STOR_NO_ERROR; byte b = 0; byte b2 = 0; lock (MarvellUtil.mvApiLock) { try { b2 = MvApi.MvApi.MV_Adapter_GetCount(); } catch (Exception ex) { Logger.Warn("MV_Adapter_GetCount exception: {0}", new object[] { ex }); return(StorApiStatusEnum.STOR_API_ERROR); } } Storage.Debug("MV_Adapter_GetCount: {0}", new object[] { b2 }); for (byte b3 = 0; b3 < b2; b3 += 1) { byte b4 = 0; MvApi.MvApi.Adapter_Info adapter_Info = default(MvApi.MvApi.Adapter_Info); lock (MarvellUtil.mvApiLock) { try { b = MvApi.MvApi.MV_Adapter_GetInfo(b3, ref b4, ref adapter_Info); } catch (Exception ex2) { Logger.Warn("MV_Adapter_GetInfo exception: {0}", new object[] { ex2 }); return(StorApiStatusEnum.STOR_API_ERROR); } } Storage.Debug("MV_Adapter_GetInfo: mvstatus={0}, count={1}", new object[] { b, b2 }); if (b != 0 || b4 != 1) { result = MarvellUtil.ToStorApiStatus(b); break; } if (controllers == null) { controllers = new List <Controller>(); } MarvellController marvellController = new MarvellController(b3); marvellController.vendorId = (int)adapter_Info.VenID; marvellController.maxHDSupported = (int)adapter_Info.MaxHD; Storage.Debug("AdvancedFeatures: {0:X}", new object[] { adapter_Info.AdvancedFeatures }); Storage.Debug("Supports ATA passthru: {0}", new object[] { ((adapter_Info.AdvancedFeatures & 134217728) != 0) ? "yes" : "no" }); controllers.Add(marvellController); } return(result); }